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