我有一个 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 并指定您注册为该对象的自定义类的名称:
这样,当从 Nib 创建 View 时,运行时将首先创建大纲 View 的正确实例。
关于c# - 在 NSOutlineView 中显示某些项目的上下文菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18373308/