【发布时间】:2017-07-11 17:28:52
【问题描述】:
当我尝试基于 IsMouseOver 属性触发时,我看到了意外行为。
在下面的代码中,当设置了边框背景属性时,将在 Border 对象上触发,而当未设置边框背景时,将在 Path 对象上触发。
我试过在边界上设置 IsHitTestVisible 但那是不行的。
我确信这是有原因的,但我显然不知道。
有人可以启发我吗?
<Geometry x:Key="RightArrowGeometry">M 0 0 L 3 3 L 0 6 Z</Geometry>
<Style TargetType="{x:Type Button}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<Grid>
<!-- <Border x:Name="TheBorder" Margin="0"> --> <!--TRIGGERS ONLY WHEN THE MOUSE IS OVER THE PATH OBJECT -->
<Border x:Name="TheBorder" Margin="0" Background="LightBlue"> <!--TRIGGERS WHEN THE MOUSE IS OVER THE BORDER OBJECT -->
<Path
x:Name="ButtonShape"
Data="{StaticResource RightArrowGeometry}"
Fill="Black"
Stretch="Uniform">
</Path>
</Border>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True" SourceName="TheBorder">
<Setter Property="Margin" Value="2" TargetName="TheBorder"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
【问题讨论】: