c# - WPF:如何在运行时向菜单添加新的菜单项?

标签 c# wpf

我有一个带有菜单的简单 WPF 应用程序。我需要在运行时动态添加菜单项。当我简单地创建一个新菜单项并将其添加到其父 MenuItem 时,无论是否调用 UpdateLayout,它都不会显示在菜单中。

要允许菜单在运行时动态添加其他项目,必须做什么?

注意:以下代码不起作用。

            MenuItem mi = new MenuItem();
            mi.Header = "Item to add";
            mi.Visibility = Visibility.Visible;
            //addTest is a menuitem that exists in the forms defined menu
            addTest.Items.Add(mi);
            addTest.UpdateLayout();

目前,默认菜单项是在 xaml 文件中定义的。我想在此菜单及其现有菜单项上添加其他菜单项。然而,如前所述,上面的代码什么也没做。

最佳答案

//Add to main menu
MenuItem newMenuItem1 = new MenuItem();
newMenuItem1.Header = "Test 123";
this.MainMenu.Items.Add(newMenuItem1);

//Add to a sub item
MenuItem newMenuItem2 = new MenuItem();
MenuItem newExistMenuItem = (MenuItem)this.MainMenu.Items[0];
newMenuItem2.Header = "Test 456";
newExistMenuItem.Items.Add(newMenuItem2);

关于c# - WPF:如何在运行时向菜单添加新的菜单项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/291522/

相关文章:

具有接受参数的构造函数的 C# 单例

c# - 如何在 C# 中编写 Windows 7 小工具?

c# - 在 C# 中发送未实现方法的惯用方式

c# - 调用 Application.Shutdown() 后,使用 ShowDialog 显示窗口不起作用

c# - Prism MVVM ObservesCanExecute - 如何嵌套(逻辑与)简单的可观察属性

C# : How to get number of days from an object of DateTime

c# - 模拟测试依赖注入(inject)对象引用

c# - WPF 图像控件不处理源

c# - WPF中的嵌套ObservableCollection数据绑定(bind)

c# - 如果不同的属性发生变化,则订阅不同的属性事件