.net Wpf用户控件:使复杂属性可编辑
假设您在wpf中创建了一个标准UserControl或CustomControl,然后声明了一个复杂类型的属性 公共ComplexPropertyType属性{get;set;} 复杂类型是一个具有一系列属性的简单类.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
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))]