Wpf用户控件:使复杂属性可编辑

时间:2012-10-22 17:56:59

标签: .net wpf user-controls

假设您在wpf中创建标准UserControl或CustomControl,然后声明复杂类型的属性

public ComplexPropertyType AProperty {get;组; }

复杂类型是一个带有一堆属性的简单类

public class ComplexPropertyType 
{
    public int IntP { get; set; }

    public String Strp { get; set; }
}

在设计时,AProperty不可编辑。

As you can see the AProperty property is not editable

我记得System.ComponentModel中有一些属性允许我指定使用标准属性编辑器来使该属性可编辑,但我不记得了。

任何人都有一个明确不需要编写自定义属性编辑器的解决方案吗?毕竟如果我在我的控件中声明一个复杂类型Es。

的集合的属性

public ObservableCollection ACollOfProperty {get;组; }

设计器自动使用能够编辑复杂类型的System.ComponentModel.Design.CollectionEditor

enter image description here

提前致谢。

2 个答案:

答案 0 :(得分:0)

在wpf中,您可以使用此http://wpg.codeplex.com/或使用此winform contro

答案 1 :(得分:0)

我能够自己找到属性,是TypeConverter。您应该使用指定ExpandableObjectconverter

的TypeConverterAttribute在用户控件中声明该属性
    [TypeConverter(typeof(ExpandableObjectConverter))]
    public ComplexPropertyType AProperty { get; set; }

现在您应该在设计器中看到一个很好的新按钮,允许您在设计时填充值

Now property is designable

按下新的将创建ComplexPropertyType的实例,因此可以直接从设计器进行编辑。

Complex type editing in VS

ALK。