Wpf 打开ContextMenu时驻留的控件的悬停效果
我想为WPF控件添加悬停效果 为此,我创建了一个样式触发器,如果Wpf 打开ContextMenu时驻留的控件的悬停效果,wpf,Wpf,我想为WPF控件添加悬停效果 为此,我创建了一个样式触发器,如果IsMouseOver为true,它将更改控件的Background-画笔。这可以正常工作,但是如果我从控件打开ContextMenu,IsMouseOver将变为false,悬停效果将停止,直到ContextMenu关闭 我还尝试了组合使用MouseEnter和MouseLeave,但这两种方法都有相同的行为。如果上下文菜单`打开,将触发MouseLeave 我明白为什么我不能这样做,但我看不到一个很好的方法来解决我的要求。有人已
IsMouseOver
为true,它将更改控件的Background
-画笔。这可以正常工作,但是如果我从控件打开ContextMenu
,IsMouseOver
将变为false,悬停效果将停止,直到ContextMenu
关闭
我还尝试了组合使用MouseEnter
和MouseLeave
,但这两种方法都有相同的行为。如果上下文菜单`打开,将触发MouseLeave
我明白为什么我不能这样做,但我看不到一个很好的方法来解决我的要求。有人已经这样做了吗?可以通过创建第二个触发器来解决该问题,该触发器检查所附的ContextMenu是否打开:
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="{StaticResource Hover_Brush}"/>
</Trigger>
<DataTrigger Binding="{Binding ContextMenu.IsOpen,RelativeSource={RelativeSource Mode=Self}}" Value="True">
<Setter Property="Background" Value="{StaticResource Hover_Brush}"/>
</DataTrigger>
警告上述XAML工作正常,但有一个问题:如果样式用于多个项目,并且控件
ContextMenu
共享,则如果为控件打开上下文菜单,则所有项目上的悬停效果都将激活。因此,不能共享上下文菜单。如果它是在资源中定义的,请使用x:Shared=“false”属性禁用共享。如果直接在控件下定义,则不会发生此问题