WPF基于对象属性隐藏ContextMenu上的MenuItem

Sar*_*pps 5 .net wpf contextmenu menuitem

我需要以编程方式显示/隐藏MenuItem,这是最好的方法吗?

Chr*_*isF 5

好吧,要添加一个MenuItem,你需要这些内容:

var menuItem = new MenuItem() { Header = "Menu Name", Name = "Identifier", IsCheckable = true, IsChecked = visible };
menuItem.Click += new RoutedEventHandler(contextMenu_onClick);
int position = contextMenu.Items.Add(menuItem);
Run Code Online (Sandbox Code Playgroud)

(但你可能已经有了这个).

你需要一些方法将菜单项绑定到属性 - 但是没有看到你的应用程序我真的不能建议最好的方法.有一个Tag属性存储一个对象; 存储字符串的Uid属性; Name属性,它还存储一个字符串.

而:

menuItem.Visibility = Visibility.Visible;
Run Code Online (Sandbox Code Playgroud)

menuItem.Visibility = Visibility.Collapsed;
Run Code Online (Sandbox Code Playgroud)

应该切换项目的可见性.

编辑:使用Collapsed将隐藏菜单项而不是在菜单中保留空间 - 您不需要在上下文菜单中使用空格.(感谢Botz3000)

然后在您的代码中,属性值被更改,您将使用我上面描述的链接找到您希望显示/隐藏的菜单项.获得该项目后,您可以切换它的值:

menuItem.Visibility = menuItem.Visibility == Visibility.Visible ? Visibility.Collapsed : Visibility.Visible;
Run Code Online (Sandbox Code Playgroud)