我有一个自定义 WPF 控件基类。这个基类注册了一个类型为“List<”some own type">“的自定义属性。
如何在设计时初始化属性?列表中应该始终有 8 个对象,并且用户应该能够修改这些对象。
我尝试使用 PropertyMetadata 对象传递默认值,但属性编辑器中显示的集合始终为空。
public class CustomPropertyTestBase : UserControl
{
static CustomPropertyTestBase()
{
List<object> defaultValue = new List<object>(new object[8]);
MyCustomObjectsProperty = DependencyProperty.Register("MyCustomObjects",
typeof(List<object>), typeof(CustomPropertyTestBase),
new PropertyMetadata(defaultValue));
}
public static DependencyProperty MyCustomObjectsProperty;
[Category("MyCustomProperties")]
public List<object> MyCustomObjects
{
get;
set;
}
}
编辑:
每当我在属性编辑器中添加一个新对象时,这些新对象都不会被存储。重新打开属性编辑器后,列表再次为空。
我已将调试器附加到设计器,并且编辑器永远不会调用属性的 get 或 set 方法。
解决方案:
正如“dowhilefor”所提到的。我不得不改变 ObservableCollection 的类型。现在设计器正确地存储了更改的列表。谢谢。