小编Mar*_*ina的帖子

PropertyGrid和动态对象类型

我正在编写一个GUI应用程序,我需要启用任意对象的编辑属性(它们的类型仅在运行时才知道).

我决定使用PropertyGrid控件来启用此功能.我创建了以下类:

[TypeConverter(typeof(ExpandableObjectConverter))]
[DefaultPropertyAttribute("Value")]
public class Wrapper
{
    public Wrapper(object val)
    {
        m_Value = val;
    }

    private object m_Value;

    [NotifyParentPropertyAttribute(true)]
    [TypeConverter(typeof(ExpandableObjectConverter))]
    public object Value
    {
        get { return m_Value; }
        set { m_Value = value; }
    }
}
Run Code Online (Sandbox Code Playgroud)

当我得到一个我需要编辑的对象实例时,我为它创建了一个Wrapper并将其设置为所选对象:

Wrapper wrap = new Wrapper(obj);
propertyGrid.SelectedObject = wrap;
Run Code Online (Sandbox Code Playgroud)

但是我遇到了以下问题 - 只有当obj的类型是某种自定义类型(即我自己定义的类,或者内置的复杂类型)时才能按预期工作,但是当obj是基元时则不行.

例如,如果我定义:

[TypeConverter(typeof(ExpandableObjectConverter))]
public class SomeClass
{
    public SomeClass()
    {
        a = 1;
        b = 2;
    }

    public SomeClass(int a, int b)
    {
        this.a = a;
        this.b = b;
    }

    private …
Run Code Online (Sandbox Code Playgroud)

c# wpf propertygrid controls

5
推荐指数
1
解决办法
9249
查看次数

标签 统计

c# ×1

controls ×1

propertygrid ×1

wpf ×1