2013-05-07 60 views
1

我有一个MouseOver事件的边界。在那个边界内(进一步下来)我有几个国界与RotateTransform s ...我怎么能在顶级Border悬停事件改变他们的转换? (即改变他们的轮换?)如何获取MouseOver触发器事件更改子项

<Border.Style> 
    <Style> 
     <Style.Triggers> 
      <Trigger Property="Border.IsMouseOver" Value="True"> 
       <Setter Property="Border.Background" Value="#f0f0f0" /> 
      </Trigger> 
     </Style.Triggers> 
    </Style> 
</Border.Style> 

再往下的树,但这边框内是

<Border Padding="3" Width="73" Height="57" Background="White" RenderTransformOrigin="0.5, 0.5"> 
    <Border.Effect> 
     <DropShadowEffect BlurRadius="4" Direction="0" ShadowDepth="0" Color="#aa505050" /> 
    </Border.Effect> 
    <Border.RenderTransform> 
     <RotateTransform Angle="-2" /> 
    </Border.RenderTransform> 
</Border> 
+1

你可以在里面,边框样式与FindAncestor或绑定的ElementName走出户外界,鼠标悬停尝试DataTrigger。 – LPL 2013-05-07 15:37:13

+0

我不知道该怎么做,哈哈,你介意给我看一些代码吗?谢谢 – Chris 2013-05-07 15:50:13

+0

你是否用指定'TargetObject'的'MouseOver'触发器试过'ChangePropertyAction'? ;)http://msdn.microsoft.com/en-us/library/vstudio/dn195723.aspx – 2013-05-07 15:59:01

回答

2

你可以在内部边界Style使用DataTriggerFindAncestorElementName结合,以获得IsMouseOver你的外部边界。

<Border.Style> 
    <Style TargetType="Border"> 
     <Setter Property="RenderTransform"> 
      <Setter.Value> 
       <RotateTransform Angle="3"/> 
      </Setter.Value> 
     </Setter> 
     <Style.Triggers> 
      <DataTrigger Binding="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}, Path=IsMouseOver}" Value="True"> 
       <Setter Property="RenderTransform"> 
        <Setter.Value> 
         <RotateTransform Angle="6"/> 
        </Setter.Value> 
       </Setter> 
      </DataTrigger > 
     </Style.Triggers> 
    </Style> 
</Border.Style>