我需要以编程方式显示/隐藏菜单项,最好的方法是什么?
问问题
11862 次
2 回答
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);
(但你可能已经得到了这个)。
您将需要某种方式将菜单项与属性绑定 - 但如果没有看到您的应用程序,我无法真正建议最佳方式。有存储对象的 Tag 属性;存储字符串的 Uid 属性;Name 属性也存储一个字符串。
尽管:
menuItem.Visibility = Visibility.Visible;
和
menuItem.Visibility = Visibility.Collapsed;
应该切换项目的可见性。
编辑:使用 Collapsed 将隐藏菜单项,而不是在菜单中保留空间 - 你真的不希望上下文菜单中有空格。(为此感谢Botz3000)
然后在更改属性值的代码中,您将使用我上面描述的链接找到您希望显示/隐藏的菜单项。拥有该项目后,您可以切换它的值:
menuItem.Visibility = menuItem.Visibility == Visibility.Visible ? Visibility.Collapsed : Visibility.Visible;
于 2009-05-09T10:21:58.327 回答
0
确定要隐藏MenuItem
吗?使用 WPF 的命令框架禁用它更常见:
<MenuItem Header="_MenuName" Command="{x:Static local:MyCommands.SomeCommand}" />
...
<!-- In the menu item or any of its ancestors: -->
<SomeControl.CommandBindings>
<CommandBinding Command="{x:Static local:MyCommands.SomeCommand}" Executed="Save_Executed" CanExecute="Save_CanExecture" />
</SomeControl.CommandBindings>
WPF 将使用 的bool
结果Save_CanExecute
来确定MenuItem
' 命令当前是否可以执行,并MenuItem
相应地启用/禁用。
于 2011-07-29T19:06:02.877 回答