C# 属性网格中的斜体文本
我使用PropertyGrid来显示通过ICustomTypeDescriptor实现公开的自定义属性 “我的对象”是在树结构中设置的,每个属性的值要么在每个对象中设置,要么从父对象继承。在PropertyGrid中,我希望直观地向用户显示在选定对象中设置的属性值,以及从父对象继承的属性值 现在我把每一处房产分为两类。一组显示实际对象中的值设置,如果未设置,则显示空白字段。另一组显示指定给对象的特性值,这些特性值要么在对象中设置,要么继承(如果未在对象中设置)C# 属性网格中的斜体文本,c#,propertygrid,C#,Propertygrid,我使用PropertyGrid来显示通过ICustomTypeDescriptor实现公开的自定义属性 “我的对象”是在树结构中设置的,每个属性的值要么在每个对象中设置,要么从父对象继承。在PropertyGrid中,我希望直观地向用户显示在选定对象中设置的属性值,以及从父对象继承的属性值 现在我把每一处房产分为两类。一组显示实际对象中的值设置,如果未设置,则显示空白字段。另一组显示指定给对象的特性值,这些特性值要么在对象中设置,要么继承(如果未在对象中设置) 我想将这两个组合并为一个buy,以
我想将这两个组合并为一个buy,以常规文本显示集合属性,以斜体文本显示继承的值。但是,似乎没有任何方法可以通过ICustomTypeDescriptor.GetProperties()实现这一点。我无法轻松访问PropertyGrid的属性,因为它们是在程序运行时创建的。你不能使用斜体,但可以使用粗体;粗体行为由
属性描述符
的ShouldSerializeValue
决定;您可以通过各种System.ComponentModel
技巧(ICustomTypeDescriptor
、TypeConverter
或TypeDescriptionProvider
)包装PropertyDescriptor
),并提供您自己的PropertyDescriptor
或者,也有类似的网格,具有更多选项,例如-请参见该页上的“属性自定义”。因此,如果PropertyDescriptor为ShouldSerialize()返回true,则属性将为粗体?这不是这个方法的真正意图,对吗?如果我已经在使用DataContractSerializer序列化这些对象,那么弄乱此方法是否也有可能改变序列化对象的方式?这取决于。。。XmlSerializer(但不是,AFAIL,DataContractSerializer)通过名称识别模式,但它不使用PropertyDescriptor。如果您使用运行时描述符(而不是公共的
bool ShouldSerialize*()
),那么您应该会很好。。。