如何修改Visual Studio扩展的属性窗口对象列表中的名称

时间:2015-10-19 08:40:55

标签: c# visual-studio plugins

我正在为Visual Studio编写扩展,并创建了一个类,用于在“属性”窗口中显示自定义信息。我想修改属性窗口顶部的对象列表中显示的文本,但是无法找到执行此操作的方法。我发现这个页面似乎描述了我想要的东西:

Properties Window Object List

但是,该描述似乎不起作用。首先,描述声明“使用IProvideClassInfo接口提供的Name属性从对象本身检索以粗体显示在对象类型左侧的对象名称”,但IProvideClassInfo没有名为“Name”的属性”。此外,描述还指出类“IProvideClassInfo”的方法“GetClassInfo”返回“ITypeInfo”,但该函数的输出参数类型为“Type”,而不是“ITypeInfo”。

我想在属性窗口中显示信息的类目前看起来像这样:

public class MyProperties
{
    [Description("MyDescription")]
    [Category("MyCategory")]
    public string MyProperty { get { return "The text"; } }
}

属性“MyProperty”很好地显示了正确的描述和类别,但我还没有成功修改对象列表中的文本。我试图让“MyClass”类扩展接口“IProvideClassInfo”,但是当信息显示在属性窗口中时,似乎没有执行“GetClassInfo”方法。

我在这里缺少什么?

1 个答案:

答案 0 :(得分:3)

我在chat中提出了这个问题,答案是你需要实现ICustomTypeDescriptor接口或从类CustomTypeDescriptor派生。

您需要实现的各个方法是GetComponentName(gridview-header中的粗体/名字)和GetClassName(gridview-header中的light / second名称)。

但是,如果您只是实现这两种方法,则属性网格中不会显示其他属性。 AnkhSVN在他们的AnkhPropertyGridItem中解决了这个问题(非常感谢rhuijben这个解决方案):

{{1}}