我需要以编程方式显示/隐藏菜单项,这将是做到这一点的最好方法是什么?

有帮助吗?

解决方案

好了,要添加菜单项,你需要沿着这些路线的东西:

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);

(但你可能已经得到了这一点)。

您需要搭售的菜单项属性的某种方式 - 但没有看到你的应用程序,我不能真的建议的最佳途径。有存储对象的标签属性;其存储字符串的UID属性;名称属性还存储的字符串。

虽然:

menuItem.Visibility = Visibility.Visible;

menuItem.Visibility = Visibility.Collapsed;

应触发项的可见性。

编辑:是折叠将隐藏在菜单中的菜单项,并没有预留空间 - 你真的不希望在上下文菜单空格。 (感谢Botz3000此)

然后在你的代码中的属性值改变了你会找到你想用我上面描述的联动显示/隐藏的菜单项。一旦你的项目,你可以切换它的值:

menuItem.Visibility = menuItem.Visibility == Visibility.Visible ? Visibility.Collapsed : Visibility.Visible;

其他提示

您确定要隐藏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将使用boolSave_CanExecute结果相应地确定MenuItem的命令是否可以执行当前,和启用/禁用MenuItem

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top