我有一個自定義的WPF控件基類。此基類註冊一個定製屬性,其類型爲「List <」,某些類型爲「>」。如何初始化自定義WPF控件中的集合屬性
如何初始化設計時間的屬性?列表中應始終有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方法。
SOLUTION:
正如「dowhilefor」提到的那樣。我不得不改變類型ObservableCollection。現在設計師正確地存儲更改的列表。 謝謝。
對於您的用戶控件(即單身人士)的實例,列表是否應該相同?如果沒有,則使用'new PropertyMeta(null)'而不是'new PropertyMetadata(defaultValue)'並在公共構造函數中使用'MyCustomObjects = new List