Программное создание NSMenuItems в 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); 

Но это ничего не делает.

Когда я добавляю код в MainWindowController.Initialize(), я получаю ошибку утверждения "элемент, который нужно вставить в меню, уже находится в другом меню"

Я переносил код, найденный в этом ответе SO: Создание NSMenu с NSMenuItems в нем, программно?


person sohum    schedule 27.10.2011    source источник


Ответы (1)


Оказывается, мне нужно было сделать следующее:

fileMenuItem.Submenu = fileMenu;

Свойство Submenu NSMenuItem должно было быть установлено на фактическое меню вместо свойства Menu.

person sohum    schedule 22.11.2011
comment
это работает, хотя вы также должны установить заголовок fileMenu.title = Someting, если это не первый элемент (у которого всегда есть имя приложения) - person PetrV; 10.08.2015