ContextMenu显示不到1秒
本文关键字:1秒 显示 ContextMenu | 更新日期: 2023-09-27 18:27:03
我想控制控件的上下文菜单何时显示。
这是我的代码:
void MyControl_MouseRightButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
if ( some condition .....)
{
this.Focus();
contextmeun.PlacementTarget = this;
contextmeun.IsOpen = true;
}
}
然而,它只出现不到1秒,然后立即消失。为什么?
谢谢你的帮助!
可能是因为您正在聚焦上下文菜单所属的控件,然后显示上下文菜单,但是当父控件获得焦点时,上下文菜单将关闭。
尝试在Xaml中设置上下文菜单,以获得正确的行为
<MyControl>
<MyControl.ContextMenu>
<ContextMenu>
<!-- Define context menu here -->
</ContextMenu>
</MyControl.ContextMenu>
</MyControl>
这可以以纯XAML形式完成,您所需要做的就是将上下文菜单的visibility
与包含以下条件的bool属性绑定-
<YourControl>
<YourControl.Resources>
<BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter"/>
</YourControl.Resources>
<YourControl.ContextMenu>
<ContextMenu Visibility="{Binding IsEnable,
Converter={StaticResource BooleanToVisibilityConverter}}">
<MenuItem Header="MenuItem1"/>
<MenuItem Header="MenuItem2"/>
<MenuItem Header="MenuItem3"/>
</ContextMenu>
</YourControl.ContextMenu>
</YourControl>
这里IsEnable
是一个普通的CLR属性,在它的getter中,您可以根据需要切换上下文菜单的可见性来获得条件的逻辑。。