我正在使用PropertyGrid来显示通过ICustomTypeDescriptor实现公开的自定义属性。
我的对象是在树结构中设置的,每个属性的值都在每个对象中设置或从父对象继承。在PropertyGrid中,我想直观地向用户显示在所选对象中设置的属性值,以及从父对象继承的属性值。
现在我将每个属性显示为两类。一组显示实际对象中设置的值,如果未设置,则显示空白字段。另一组显示分配给对象的属性值,这些属性值在对象中设置,或者如果未在对象中设置则继承。
我想将这两个组合成一个购买,在常规文本中显示集合属性,并以斜体文本继承值。但是,似乎没有任何方法可以通过ICustomTypeDescriptor.GetProperties()来实现。而且我无法轻松访问PropertyGrid的属性,因为它们是在程序运行时创建的。
答案 0 :(得分:3)
你不能做斜体 - 但你可以做大胆;大胆的行为取决于PropertyDescriptor
的{{1}};您可以通过各种ShouldSerializeValue
技巧(PropertyDescriptor
,System.ComponentModel
或ICustomTypeDescriptor
包装TypeConverter
并提供您自己的TypeDescriptionProvider
。
或者,有类似的网格有更多选项,例如by VisualHint - 请参阅该页面上的“属性自定义”。