カスタム 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 を変更する必要がありました。これで、デザイナーは変更されたリストを正しく保存します。ありがとう。