我可以向Xamarin.Mac中的NSpoupButton项添加额外信息吗?

我可以向Xamarin.Mac中的NSpoupButton项添加额外信息吗?,xamarin,xamarin.mac,nspopupbutton,Xamarin,Xamarin.mac,Nspopupbutton,我正在使用Xamarin.Mac在C中构建一个Mac OS应用程序。我想用存储更多信息而不仅仅是标题和索引的项来填充一个下拉列表NSPoupButton。具体地说,我希望每个项目都有自己的数据库ID,因此当用户从下拉列表中选择该项目时,我可以轻松地从数据库中获取相关记录 我看到NSPoupButton使用了NSMenuItem的实例,并且很容易将NSMenuItem子类化,但似乎没有直接插入实例的方法。AddItem方法只接受项目标题的字符串,并且没有重载。有没有一种方法可以使用自定义项,或者我

我正在使用Xamarin.Mac在C中构建一个Mac OS应用程序。我想用存储更多信息而不仅仅是标题和索引的项来填充一个下拉列表NSPoupButton。具体地说,我希望每个项目都有自己的数据库ID,因此当用户从下拉列表中选择该项目时,我可以轻松地从数据库中获取相关记录

我看到NSPoupButton使用了NSMenuItem的实例,并且很容易将NSMenuItem子类化,但似乎没有直接插入实例的方法。AddItem方法只接受项目标题的字符串,并且没有重载。有没有一种方法可以使用自定义项,或者我只能使用标题和索引来区分

谢谢

通过NSPopUpButton.Menu.AddItem方法添加子类d NSMenuItem

NSMenuItem示例: 用法示例: 通过NSPopUpButton.Menu.AddItem方法添加子类d NSMenuItem

NSMenuItem示例: 用法示例:
子类化它并添加属性来保存额外信息有什么问题?我不知道如何将该子类的实例添加到NSPopUpButton的项中。我看到的唯一AddItem方法只接受Title属性的字符串,它创建的项是标准的NSMenuItem。您需要使用NSPopUpButton.Menu属性,查看我的答案。子类化它并添加属性来保存额外信息有什么问题?我不知道如何将该子类的实例添加到NSPopUpButton的项中。我看到的唯一AddItem方法只接受Title属性的字符串,它创建的项是标准的NSMenuItem。您需要使用NSPopUpButton.Menu属性,请参阅我的答案。这就是我需要的!非常感谢。这就是我需要的!非常感谢。
public class MyNSMenuItem : NSMenuItem
{
    public string SomeCustomProperty { get; set; }
    
    ~~~~
    // add all the .ctors w/ base calls....
}
var popUpButton = new NSPopUpButton()
{
    Frame = new CGRect(100, 100, 100, 100),
    Title = "A pop button",
};
var menuItem = new MyNSMenuItem()
{
    Title = "StackOverflow",
    SomeCustomProperty = "SomeInstance",
};
menuItem.Activated += (sender, e) =>
{
    Console.WriteLine((sender as MyNSMenuItem).SomeCustomProperty);
};
popUpButton.Menu.AddItem(menuItem);
this.View.AddSubview(popUpButton);