我可以向 Xamarin.Mac 中的 NSPopUpButton 项目添加额外信息吗?
Can I add extra information to NSPopUpButton items in Xamarin.Mac?
我正在使用 Xamarin.Mac 在 C# 中构建一个 Mac OS 应用程序。我想用存储更多信息的项目填充下拉列表 (NSPopUpButton),而不仅仅是它们的标题和索引。具体来说,我希望每个项目也拥有自己的数据库 ID,这样当用户从下拉列表中选择该项目时,我可以轻松地从数据库中获取相关记录。
我看到 NSPopUpButton 使用 NSMenuItem 的实例,并且很容易将 NSMenuItem 子类化,但似乎没有办法直接插入实例。 AddItem() 方法只接受一个字符串(项目的标题)并且没有重载。有没有办法使用自定义项目,还是我只能使用标题和索引来区分?
谢谢!
通过 NSPopUpButton.Menu.AddItem
方法添加您的子类 NSMenuItem
。
示例 NSMenuItem:
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 = "Whosebug",
SomeCustomProperty = "SomeInstance",
};
menuItem.Activated += (sender, e) =>
{
Console.WriteLine((sender as MyNSMenuItem).SomeCustomProperty);
};
popUpButton.Menu.AddItem(menuItem);
this.View.AddSubview(popUpButton);
我正在使用 Xamarin.Mac 在 C# 中构建一个 Mac OS 应用程序。我想用存储更多信息的项目填充下拉列表 (NSPopUpButton),而不仅仅是它们的标题和索引。具体来说,我希望每个项目也拥有自己的数据库 ID,这样当用户从下拉列表中选择该项目时,我可以轻松地从数据库中获取相关记录。
我看到 NSPopUpButton 使用 NSMenuItem 的实例,并且很容易将 NSMenuItem 子类化,但似乎没有办法直接插入实例。 AddItem() 方法只接受一个字符串(项目的标题)并且没有重载。有没有办法使用自定义项目,还是我只能使用标题和索引来区分?
谢谢!
通过 NSPopUpButton.Menu.AddItem
方法添加您的子类 NSMenuItem
。
示例 NSMenuItem:
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 = "Whosebug",
SomeCustomProperty = "SomeInstance",
};
menuItem.Activated += (sender, e) =>
{
Console.WriteLine((sender as MyNSMenuItem).SomeCustomProperty);
};
popUpButton.Menu.AddItem(menuItem);
this.View.AddSubview(popUpButton);