2013-09-09 2 views
0

Я создал триггер для окна просмотра, который, когда мышь находится над окном просмотра, изменяется содержимое.Изменить стиль на родительском мыши

Это работает, но поскольку содержимое окна просмотра мало, я хочу иметь рамку вокруг окна просмотра, которая также запускает событие mouseover.

<Viewbox Width="50" x:Name="ActionIconBox1" Height="40.5"> 
    <ContentControl> 
     <ContentControl.Style> 
      <Style TargetType="{x:Type ContentControl}"> 
        <Setter Property="Content" Value="{StaticResource action_message}"/> 
        <Style.Triggers> 
          <DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType=Viewbox,AncestorLevel=1}, Path=IsMouseOver}" Value="True" > 
           <Setter Property="Content" Value="{StaticResource action_message_focus}"/> 
          </DataTrigger> 
        </Style.Triggers> 
      </Style> 
     </ContentControl.Style> 
    </ContentControl> 
</Viewbox> 

Это работает, только если мышь находится в контенте контента, а не когда мышь входит в окно просмотра.

Ресурс брезентовой

<Canvas xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Name="appbar_message" Width="76" Height="76" Clip="F1 M 0,0L 76,0L 76,76L 0,76L 0,0"> 
<Path Width="38" Height="39.75" Canvas.Left="19" Canvas.Top="22" Stretch="Fill" Fill="#FF1BA1E2" Data="F1 M 33,51L 36.4167,61.75L 24,51L 19,51L 19,22L 57,22L 57,51L 33,51 Z "/> </Canvas> 

Почему не связывании работа?

+0

Что именно «не работает»? Кроме того, пытаетесь ли вы ссылаться на 'appbar_message' Canvas' из' Trigger'? У вас может быть проблема с тех пор, как вы назвали ее 'action_message' в' Trigger'. – Sheridan

+0

Содержимое изменяется только тогда, когда мышь находится в contentcontrol, самом изображении. Но не тогда, когда мышь находится в окне просмотра. Да, не беспокойтесь об этом, просто скопируйте ошибку. В моем коде ссылка правильная. –

+0

У вас есть поле между viewbox и contentcontrol? – Nitin

ответ

1

Просто поместите его в рамку и измените AncestorType.

<Viewbox Width="50" x:Name="ActionIconBox1" Height="40.5" > 
     <Border BorderThickness="2" BorderBrush="Red"> 
      <ContentControl> 
       <ContentControl.Style> 
        <Style TargetType="{x:Type ContentControl}"> 
         <Setter Property="Content" Value="{StaticResource action_message}"/> 
         <Style.Triggers> 
          <DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType=Border,AncestorLevel=1}, Path=IsMouseOver}" Value="True" > 
           <Setter Property="Content" Value="{StaticResource action_message_focus}"/> 
          </DataTrigger> 
         </Style.Triggers> 
        </Style> 
       </ContentControl.Style> 
      </ContentControl> 
     </Border> 
    </Viewbox> 
1

Вы размещаете Trigger на ContentControl, поэтому, конечно, это работает только на этом. Просто установите размер ContentControl того же размера, что и ViewBox, чтобы удалить «границу», как вы ее называете.