我在 C# 中找不到 PropertyGrid 的可用属性列表,你知道在哪里可以找到吗?
谢谢。
影响 PropertyGrid 的属性是间接的:有趣的代码是提供 PropertyDescriptor 实现的 TypeDescriptor。然而,这辆面包车被 ICustomTypeDescriptor 或 TypeDescriptionProvider 否决了。
但是,如果我们假设默认规则,则发挥作用的关键属性是:
[DisplayName(...)]
[Description(...)]
[Category(...)]
[TypeConverter(...)]
[ReadOnly(...)]
[Browsable(...)]
[DefaultValue(...)]
[Editor(...)]
其他一些事情可以通过模式检测到,例如是否存在 ShouldSerialize{name} 或 Reset{name} 方法。
我还要补充
RefreshProperties 属性
NotifyParentPropertyAttribute
如果 PropertyGrid 来自 Xceed Extended.Wpf.Toolkit 它也依赖于 System.ComponentModel.DataAnnotations.Display 属性。
[Display(Name="", Description="", Order=1)]
有了它,您可以提供:
我还会添加“MergableAttribute”。这对于防止属性网格对标识字段进行分组很有用,因为如果您选择多个对象,您不希望能够使用属性网格修改对象的“名称”属性(例如),因为它必须每个对象保持唯一...
我没有看到一个很好的解决方案来订购 WinForms PropertyGrid 的属性,所以这是我使用的解决方案:
pgDetails.PropertySortChanged += (s, ea) =>
{
if (pgDetails.PropertySort == PropertySort.CategorizedAlphabetical)
{
pgDetails.PropertySort = PropertySort.Categorized;
}
};
pgDetails.PropertySort = PropertySort.Categorized;
这样做的方式是网格现在将维护类中属性的声明顺序。