c# - 在 NSOutlineView 中显示某些项目的上下文菜单

标签 c# cocoa monomac

我有一个 SourceList (NSOutlineView),我想显示某些项目的上下文菜单。环顾四周,我在 Cocoa 和 Obj-C 中找到了答案,但我正在尝试在 MonoMac 和 C# 中做到这一点。

在我看来,我需要做自己的自定义类,它继承自 NSOutlineView 并实现 MenuForEvent 方法。但是,当我尝试用我自己的自定义类替换旧的标准 NSOutlineView 时,在运行时期间什么也没有显示。在我的 Controller 中,我调用 View.ReplaceSubviewWith(oldTree, newTree)。

我还需要做其他事情吗?或者也许还有另一种方法可以实现这一目标?

最佳答案

您应该能够以声明方式执行此操作,而不是尝试像那样交换实例。

确保“注册”您的自定义大纲 View ,例如:

[Register("MySourceList")]
private class MySourceList : NSOutlineView
{
    // Need this constructor for items created in .xib
    public MySourceList(IntPtr handle) : base(handle)
    { }

然后,在 Xcode 设计器中,选择大纲 View 并指定您注册为该对象的自定义类的名称:

enter image description here

这样,当从 Nib 创建 View 时,运行时将首先创建大纲 View 的正确实例。

关于c# - 在 NSOutlineView 中显示某些项目的上下文菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18373308/

相关文章:

c# - LINQ 表达式 - 动态来源和位置子句

c# - 在 .NET 项目中使用 BDD 规范时,为什么要同时使用 SpecFlow * 和 * MSpec?

objective-c - 当 RTF 数据复制到粘贴板时,NSPasteboard 无法读取文本

c# - WPF 的跨平台替代品

c# - Mac 上 Mono 中的 DllImport 出现 DllNotFoundException

c# - 如何使用 C# 连接到打开的 Internet Explorer 窗口?

c# - WPF Datagrid,根据值在列中显示 X

cocoa - 在 Cocoa 中显示日志输出

macos - Swift for OsX WebFrameLoadDelegate 不起作用

macos - Mac 上的 Monodevelop : `Mono.framework MDK is missing`