3

我正在使用 PropertyGrid 来显示通过 ICustomTypeDescriptor 的实现公开的自定义属性。

我的对象设置在树结构中,每个属性的值要么在每个对象中设置,要么从父对象继承。在 PropertyGrid 中,我想直观地向用户展示在所选对象中设置了哪些属性值,以及哪些属性值是从父对象继承的。

现在,我将每个属性都显示为两个类别。一组显示在实际对象中设置的值,如果未设置,则带有空白字段。另一组显示分配给对象的属性值,这些属性值要么在对象中设置,要么在对象中未设置时继承。

我想将这两组组合成一个购买,以常规文本显示设置属性,并以斜体文本显示继承值。但是,似乎没有任何方法可以通过 ICustomTypeDescriptor.GetProperties() 做到这一点。而且我无法轻松访问 PropertyGrid 的属性,因为它们是在程序运行时创建的。

4

1 回答 1

3

你不能用斜体——但你可以用粗体;粗体行为由PropertyDescriptor's决定ShouldSerializeValuePropertyDescriptor您可以通过各种System.ComponentModel技巧(ICustomTypeDescriptorTypeConverter)包装sTypeDescriptionProvider并提供您自己的PropertyDescriptor.

或者,有更多选项的类似网格,例如VisualHint - 请参阅该页面上的“属性自定义”。

于 2009-04-13T19:21:10.533 回答