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

.net Wpf用户控件:使复杂属性可编辑,.net,wpf,user-controls,.net,Wpf,User Controls,假设您在wpf中创建了一个标准UserControl或CustomControl,然后声明了一个复杂类型的属性 公共ComplexPropertyType属性{get;set;} 复杂类型是一个具有一系列属性的简单类 public class ComplexPropertyType { public int IntP { get; set; } public String Strp { get; set; } } 在设计时,属性不可编辑 我记得System.Compone

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

公共ComplexPropertyType属性{get;set;}

复杂类型是一个具有一系列属性的简单类

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

    public String Strp { get; set; }
}
在设计时,属性不可编辑

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

有人有一个解决方案,显然不需要编写自定义属性编辑器吗?毕竟,如果我在我的控件中声明一个属性,它是一个复杂类型的集合

公共ObservableCollection AcolofProperty{get;set;}

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


提前感谢。

在wpf中,您可以使用此属性,也可以使用此属性。

我自己能够找到属性,即TypeConverter。您应该在用户控件中声明属性,并使用TypeConverterAttribute指定ExpandableObjectconverter

    [TypeConverter(typeof(ExpandableObjectConverter))]
    public ComplexPropertyType AProperty { get; set; }
现在,您应该在设计器中看到一个漂亮的新按钮,它允许您在设计时填充值

按new it将创建ComplexPropertyType的实例,因此可以直接从设计器中对其进行编辑


Alk.

我希望使用visual studio中包含的编辑器:),因为它适用于集合编辑器,应该可以用于单个对象。您的回答很好,但我不想创建另一个属性编辑器,因为WPF designer有自己的属性编辑器,在睡了一个晚上之后,我能够清晰地记住:)确切的属性,它是[TypeConverter(typeof(ExpandableObjectConverter))]