C# 如何在用户右键单击NSTableCellView Xamarin.Mac时创建和显示菜单

C# 如何在用户右键单击NSTableCellView Xamarin.Mac时创建和显示菜单,c#,cocoa,xamarin,xamarin.mac,C#,Cocoa,Xamarin,Xamarin.mac,当用户右键单击表行上的任意位置时,我需要在NSTableView上显示一个菜单。就像我们在浏览器中的任意位置单击鼠标右键,菜单就会显示出来一样 NSTableView具有可分配给NSMenu的Menu属性 当然,所有这些都可以在Xcode的IB中完成,但是如果您以编程方式执行此操作,则需要构造NSMenu,添加所需的NSMenuItem并将其分配给NSTableView var menu = new NSMenu("A context menu") { Delegate = this }

当用户右键单击表行上的任意位置时,我需要在NSTableView上显示一个菜单。就像我们在浏览器中的任意位置单击鼠标右键,菜单就会显示出来一样

NSTableView
具有可分配给
NSMenu
Menu
属性

当然,所有这些都可以在Xcode的IB中完成,但是如果您以编程方式执行此操作,则需要构造NSMenu,添加所需的NSMenuItem并将其分配给NSTableView

var menu = new NSMenu("A context menu")
{
    Delegate = this
};
menu.AddItem(new NSMenuItem { Title = "StackOverflow" Action = SomeMenuAction });
aTableView.Menu = menu;

给出错误:无法将类型“MyProject.MyProjectViewController”隐式转换为“AppKit.INSMenuDelegate”。存在显式转换(是否缺少转换?)。刚刚删除了委托=此部分,工作正常。@Faisalghafar您可能需要实现
INSMenuDelegate
来访问its协议,但如果您不需要这些协议,则可以跳过分配委托