Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 打开ContextMenu时驻留的控件的悬停效果_Wpf - Fatal编程技术网

Wpf 打开ContextMenu时驻留的控件的悬停效果

Wpf 打开ContextMenu时驻留的控件的悬停效果,wpf,Wpf,我想为WPF控件添加悬停效果 为此,我创建了一个样式触发器,如果IsMouseOver为true,它将更改控件的Background-画笔。这可以正常工作,但是如果我从控件打开ContextMenu,IsMouseOver将变为false,悬停效果将停止,直到ContextMenu关闭 我还尝试了组合使用MouseEnter和MouseLeave,但这两种方法都有相同的行为。如果上下文菜单`打开,将触发MouseLeave 我明白为什么我不能这样做,但我看不到一个很好的方法来解决我的要求。有人已

我想为WPF控件添加悬停效果

为此,我创建了一个样式触发器,如果
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”属性禁用共享。如果直接在控件下定义,则不会发生此问题