【问题标题】:List of PropertyGrid AttributesPropertyGrid 属性列表
【发布时间】:2013-02-24 11:30:13
【问题描述】:

我在 C# 中找不到 PropertyGrid 的可用属性列表,你知道在哪里可以找到吗?

谢谢。

【问题讨论】:

  • 嗯。您认为属性列表是什么?
  • 通过属性,我的意思是你放在属性顶部的东西,例如,显示不同的名称,或者将它们放在 propertygrid 中的一个类别中:) 像这样:[CategoryAttribute( "ID 设置"), DescriptionAttribute("客户的社保号")]
  • 属性列表列在该页面上。就在 Syntax 标头之后。这个link 会直接带你到那个 - 看看顶部。
  • @Oded 没有说明哪些属性会影响 PropertyGrid - 它只是说明 PropertyGrid 自身 有哪些属性。

标签: c# propertygrid


【解决方案1】:

影响 PropertyGrid 的属性是间接的:有趣的代码是提供 PropertyDescriptor 实现的 TypeDescriptor。但是,这辆面包车会被 ICustomTypeDescriptor 或 TypeDescriptionProvider 否决。

但是,如果我们假设默认规则,则起作用的关键属性是:

  • [DisplayName(...)]
  • [Description(...)]
  • [Category(...)]
  • [TypeConverter(...)]
  • [ReadOnly(...)]
  • [Browsable(...)]
  • [DefaultValue(...)]
  • [Editor(...)]

其他一些事情是通过模式检测到的,例如是否存在 ShouldSerialize{name} 或 Reset{name} 方法。

【讨论】:

  • Editor对于属性网格也是相当重要的。
  • 我还会添加 RefreshPropertiesAttribute NotifyParentPropertyAttribute
【解决方案2】:

我也会添加

刷新属性属性

NotifyParentPropertyAttribute

【讨论】:

  • NotifyParentPropertyAttribute - 正是我想要的!谢谢!
【解决方案3】:

如果 PropertyGrid 来自 Xceed Extended.Wpf.Toolkit 它也依赖 System.ComponentModel.DataAnnotations.Display 属性。

[Display(Name="", Description="", Order=1)]

有了它,您可以提供:

  1. 名称覆盖 [DisplayName(...)]
  2. 描述可能的覆盖 [Description(...)]
  3. 列表中的订单(唯一,不知道其他方式提供订单)
  4. 还有其他几个(GroupName、Prompt、ShortName、ResourceType、AutoGenerateField、AutoGenerateFilter),但我没有测试它们,可以说它们在属性网格中工作...

【讨论】:

    【解决方案4】:

    我还会添加“MergableAttribute”。这对于防止属性网格对标识字段进行分组很有用,因为如果您选择多个对象,您不希望能够使用属性网格修改对象的“名称”属性(例如),因为它必须每个对象保持唯一...

    【讨论】:

      【解决方案5】:

      我没有看到一个很好的解决方案来订购 WinForms PropertyGrid 的属性,所以这是我使用的解决方案:

      pgDetails.PropertySortChanged += (s, ea) =>
      {
          if (pgDetails.PropertySort == PropertySort.CategorizedAlphabetical)
          {
              pgDetails.PropertySort = PropertySort.Categorized;
          }
      };
      
      pgDetails.PropertySort = PropertySort.Categorized;
      

      这样做的方式是网格现在将保持类中属性的声明顺序。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-08-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多