我正在尝试以编程方式将菜单添加到我的MonoMac应用程序。我打开了MainMenu.xib,并从MainMenu控件中删除了所有NSMenuItem

我将以下代码添加到FinishedLaunching覆盖中:

var fileMenuItem = new NSMenuItem("File");
var fileMenu = new NSMenu();

var fileNew = new NSMenuItem("New");
var fileOpen = new NSMenuItem("Open");
var fileSave = new NSMenuItem("Save");

fileMenu.AddItem(fileNew);
fileMenu.AddItem(fileOpen);
fileMenu.AddItem(fileSave);

fileMenuItem.Menu = fileMenu;

NSApplication.SharedApplication.MainMenu.AddItem(fileMenuItem);

但是它什么也没做。

当我将代码添加到MainWindowController.Initialize()时,我得到一个断言失败“要插入菜单的项目已经在另一个菜单中”

我正在移植在此SO答案中找到的代码:Creating NSMenu with NSMenuItems in it, programmatically?

最佳答案

原来我必须执行以下操作:

fileMenuItem.Submenu = fileMenu;

NSMenuItem的Submenu属性应该已经设置为实际菜单,而不是Menu属性。

10-01 23:38