簡體   English   中英

IsMouseOver觸發器-使用路徑時發生意外行為

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM