【问题标题】:Converting List<MyClass> Property into PropertyGrid compatible property entries in c#在 c# 中将 List<MyClass> 属性转换为 PropertyGrid 兼容的属性条目
【发布时间】:2009-07-28 16:54:07
【问题描述】:

我有一个包含许多属性的基类。其中包括带有元数据的扩展属性列表。这是一个自定义类的列表,其中包含 DisplayName、Description、Name、Type 和 Value 属性以帮助 PropertyGrid。

所需的最终结果是显示我的基类属性与上面列表中的扩展属性合并的 PropertyGrid。我不希望 PropertyGrid 将我的列表显示为单个条目,而是将每个扩展属性与我的基类属性合并。本质上,PropertyGrid 认为我的扩展属性列表是对象的第一类属性。

这是否可以使用反射或动态类型描述符?

【问题讨论】:

    标签: c# propertygrid


    【解决方案1】:

    使用自定义 TypeConverter 应该相当简单。

    这样的事情将是一个开始:

    public override bool GetPropertiesSupported(ITypeDescriptorContext context)
    {
      return true;
    }
    
    public override PropertyDescriptorCollection GetProperties(
        ITypeDescriptorContext context, object value, Attribute[] attributes)
    {
      return base.GetProperties(context, value, attributes).
        Concat(TypeDescriptor.GetConverter(typeof(TheBaseType)).
        GetProperties(context, value, attributes));
    }
    

    【讨论】:

    • 谢谢leppie,你能把这个放到上下文中吗?即,这是我的 ExtendedProperty 类还是我的 Base 类的自定义类型转换器? Concat 也没有出现在 PropertyDescriptorCollection 的智能感知中(目标框架 = 3.5)
    • 这将是一个应用于派生类的类型转换器。 'Concat' 是一个伪函数,你自己写吧:)
    猜你喜欢
    • 2017-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    相关资源
    最近更新 更多