在MonoMac中以编程方式创建NSMenuItems

6

我想在我的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() 中时,我收到了一个断言错误 "item to be inserted into menu already is in another menu"。

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

1个回答

5
原来我需要做以下事情:
fileMenuItem.Submenu = fileMenu;

NSMenuItem的子菜单属性应该设置为实际的菜单,而不是菜单属性。

这个可以工作,但如果它不是第一项,你也应该设置fileMenu.title =“Something”的标题(第一项始终有应用程序的名称)。 - PetrV

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接