使用TypeDescriptor for PropertyGrid动态添加属性级属性

时间:2009-08-19 14:23:47

标签: .net propertygrid typedescriptor

我希望在网格中显示时动态添加属性(如Browsable(false))。场景是我有一个带有一些公共属性的自定义类。但是,我不希望所有公共属性都显示在UI中。有出路吗?

我尝试使用TypeDescriptor。但是,它仅适用于类型级别,而不适用于属性级别。我找不到任何有关如何在物业级别使用它的帮助。

任何指针都将受到高度赞赏。

2 个答案:

答案 0 :(得分:3)

过去几天我一直在同一地区工作。长话短说,我得出的结论是不可能的。

您是否尝试在运行时应用属性是因为您不想将“UI”代码与自定义类混合使用?

如果是这种情况,BrowsableAttribute是ComponentModel(http://msdn.microsoft.com/en-us/library/system.componentmodel.aspx)的成员,并且与WinForms具有相同的UI相关性。

卡尔

答案 1 :(得分:2)

实际上这是可能的,但我必须承认它相当模糊且记录不清。关键是从System.ComponentModel.TypeDescriptionProvider派生自己的自定义TypeDescriptorProvider。然后你可以返回自己的TypeDescriptor后代。

我这样做是为了修复ASP.NET MVC中关于ViewModel和元数据的相当讨厌的限制,但你也可以使用它来插入你自己的额外元数据。