[英]IsMouseOver Trigger - Unexpected behavior when using Path
嘗試基於IsMouseOver屬性觸發時,我看到意外的行為。
在下面的代碼中,當設置borders Background屬性時,觸發將在Border對象上發生,而當未設置borders背景時,觸發將在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>
如果您要在未設置背景的情況下尋找觸發IsMouseOver
的邊框,請嘗試將Border的Background設置為Background="Transparent"
。
與默認的null
背景相反,這將使透明背景仍然觸發事件。 如果將背景設置為非空值,則任何鼠標輸入事件都將觸發。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.