除非 children 悬停在上方,否则 DockPanel 的 IsMouseOver 触发器不会触发
IsMouseOver trigger for DockPanel not firing unless children are hovered over
这个问题之前已经被问过几次,但这次,我找到的 none 个答案证明是有效的。
所以我有一个自定义 DockPanel
,里面有 2 个 child 个元素,1 个 TextBox
和 1 个 Image
。
我打算让 DockPanel 在悬停时改变颜色,所以我在里面放了一个触发器。但目前,如果我将鼠标悬停在 children 上,它只会改变颜色,而将鼠标悬停在元素之间的空白处不会做任何事情。
我读过提到使用 isHitTestVisible
的类似帖子,但它没有任何作用。
我的代码的简短版本如下:
<DockPanel>
<!-- Change color on mouse hover -->
<DockPanel.Style>
<Style>
<Style.Triggers>
<Trigger Property="DockPanel.IsMouseOver" Value="True">
<Setter Property="DockPanel.Background" Value="#FFe6ffe6"/>
</Trigger>
</Style.Triggers>
</Style>
</DockPanel.Style>
<StackPanel Orientation="Vertical" DockPanel.Dock="Center">
<!-- TextBox and Image code here -->
</StackPanel>
</DockPanel>
将此添加到您的停靠面板样式。
<Trigger Property="DockPanel.IsMouseOver" Value="False">
<Setter Property="DockPanel.Background" Value="Transparent"/>
</Trigger>
这个问题之前已经被问过几次,但这次,我找到的 none 个答案证明是有效的。
所以我有一个自定义 DockPanel
,里面有 2 个 child 个元素,1 个 TextBox
和 1 个 Image
。
我打算让 DockPanel 在悬停时改变颜色,所以我在里面放了一个触发器。但目前,如果我将鼠标悬停在 children 上,它只会改变颜色,而将鼠标悬停在元素之间的空白处不会做任何事情。
我读过提到使用 isHitTestVisible
的类似帖子,但它没有任何作用。
我的代码的简短版本如下:
<DockPanel>
<!-- Change color on mouse hover -->
<DockPanel.Style>
<Style>
<Style.Triggers>
<Trigger Property="DockPanel.IsMouseOver" Value="True">
<Setter Property="DockPanel.Background" Value="#FFe6ffe6"/>
</Trigger>
</Style.Triggers>
</Style>
</DockPanel.Style>
<StackPanel Orientation="Vertical" DockPanel.Dock="Center">
<!-- TextBox and Image code here -->
</StackPanel>
</DockPanel>
将此添加到您的停靠面板样式。
<Trigger Property="DockPanel.IsMouseOver" Value="False">
<Setter Property="DockPanel.Background" Value="Transparent"/>
</Trigger>