我想控制我的控制的上下文显示与否。
这是我的代码:
void MyControl_MouseRightButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
if ( some condition .....)
{
this.Focus();
contextmeun.PlacementTarget = this;
contextmeun.IsOpen = true;
}
}
然而,它只是显示不到1秒然后立即消失。那是为什么?
感谢您的帮助!
答案 0 :(得分:1)
可能是因为您正在关注上下文菜单所属的控件,然后显示上下文菜单,但是当父控件获得焦点时,上下文菜单会关闭。
尝试在Xaml中设置上下文菜单,以获得正确的行为
<MyControl>
<MyControl.ContextMenu>
<ContextMenu>
<!-- Define context menu here -->
</ContextMenu>
</MyControl.ContextMenu>
</MyControl>
答案 1 :(得分:0)
这可以用纯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中,您可以根据需要切换上下文菜单的可见性来获取条件的逻辑。