在MonoMac中以编程方式创建NSMenuItems

soh*_*hum 6 c# macos mono nsmenuitem monomac

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

我将以下代码添加到我的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); 
Run Code Online (Sandbox Code Playgroud)

但它没有做任何事情.

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

我正在移植这个SO答案中找到的代码:用编程方式在其中创建带有NSMenuItems的NSMenu?

soh*_*hum 5

事实证明我必须做以下事情:

fileMenuItem.Submenu = fileMenu;
Run Code Online (Sandbox Code Playgroud)

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