我想在网格中显示时动态添加属性(如 Browsable(false))。场景是我有一个带有一些公共属性的自定义类。但是,我不希望所有公共属性都显示在 UI 中。有出路吗?
我尝试使用 TypeDescriptor。但是,它仅适用于类型级别,而不适用于属性级别。我找不到任何关于如何在属性级别使用它的帮助。
任何指针将不胜感激。
我想在网格中显示时动态添加属性(如 Browsable(false))。场景是我有一个带有一些公共属性的自定义类。但是,我不希望所有公共属性都显示在 UI 中。有出路吗?
我尝试使用 TypeDescriptor。但是,它仅适用于类型级别,而不适用于属性级别。我找不到任何关于如何在属性级别使用它的帮助。
任何指针将不胜感激。
在过去的几天里,我一直在同一领域工作。长话短说,我得出的结论是这是不可能的。
您尝试在运行时应用属性的原因是因为您不想将“UI”代码与自定义类混合吗?
如果是这种情况,则BrowsableAttribute
它是 ComponentModel ( http://msdn.microsoft.com/en-us/library/system.componentmodel.aspx ) 的成员,并且在与 WinForms 相同的意义上与 UI 无关。
卡尔
实际上这是可能的,但我不得不承认它相当模糊且记录不充分。关键是从 System.ComponentModel.TypeDescriptionProvider 派生出您自己的自定义 TypeDescriptorProvider。然后你可以返回你自己的 TypeDescriptor 后代。
我这样做是为了解决 ASP.NET MVC 中关于 ViewModel 和元数据的一个相当讨厌的限制,但您也可以使用它来插入您自己的额外元数据。