PropertyGrid数组编辑器的自定义视图

时间:2015-02-02 15:38:54

标签: c# propertygrid system.componentmodel

我的默认属性窗口如下所示: enter image description here

是否有可能以某种方式改变这种观点?

例如,我想显示我的Template.Name属性值和Template.Description而不是[array index]和namespase。

有可能做到这一点吗?

1 个答案:

答案 0 :(得分:1)

我认为,尝试继承类CollectionConverter并覆盖方法ConvertTo。然后将新的自定义转换器类作为属性TypeConverter分配给属性。

internal class TemplateArrayConverter : CollectionConverter
{
    public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destType)
    {
        if (destType == typeof(String) && value is OutlookAddIn_MailHelper.Template[])
        {
            OutlookAddIn_MailHelper.Template[] templates = (OutlookAddIn_MailHelper.Template[])value;
            if (templates.Length > 0)
            {
                return String.Format("Total Template: {0}", templates.Length);
            }
        }

        return "None";
    }
}

在财产上:

[TypeConverter(typeof(TemplateArrayConverter))]
public OutlookAddIn_MailHelper.Template[] Templates { get; set;}