我希望在网格中显示时动态添加属性(如Browsable(false))。场景是我有一个带有一些公共属性的自定义类。但是,我不希望所有公共属性都显示在UI中。有出路吗?
我尝试使用TypeDescriptor。但是,它仅适用于类型级别,而不适用于属性级别。我找不到任何有关如何在物业级别使用它的帮助。
任何指针都将受到高度赞赏。
答案 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和元数据的相当讨厌的限制,但你也可以使用它来插入你自己的额外元数据。