إنشاء NSMenuItems برمجياً في MonoMac

أحاول برمجياً إضافة قائمة إلى تطبيق MonoMac الخاص بي. لقد فتحت MainMenu.xib وإزالة NSMenuItem كافة من عنصر التحكم MainMenu.

أنا أقوم بإضافة التعليمة البرمجية التالية إلى my FinishedLaunching override:

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() ، أحصل على فشل التوكيد "العنصر الذي سيتم إدراجه في القائمة موجود بالفعل في قائمة أخرى"

I was porting the code found in this SO answer: Creating NSMenu with NSMenuItems in it, programmatically?

6

1 إجابة

تبين أنني اضطررت إلى القيام بما يلي:

fileMenuItem.Submenu = fileMenu;

يجب أن يكون تم تعيين الخاصية Submenu من NSMenuItem إلى القائمة الفعلية بدلاً من خاصية القائمة.

5
وأضاف
يعمل هذا ، على الرغم من أنه يجب عليك أيضًا تعيين عنوان fileMenu.title = "Someting" إذا لم يكن العنصر الأول (الذي يحمل اسم التطبيق دائمًا)
وأضاف المؤلف PetrV, مصدر