必要があったので、WPF の
依存プロパティを実装
する方法を調べてみたのでメモ。
通常のプロパティの実装
private bool _Hoge;
public bool Hoge {
get { return this._Hoge; }
set { this._Hoge = value; }
}
依存プロパティの実装
public static readonly DependencyProperty HogeProperty =
DependencyProperty.Register(
"Hoge", typeof(bool), typeof(HogeClassName), new PropertyMetadata(false));
public bool Hoge {
get { return this.GetValue(HogeProperty); }
set { this.SetValue(HogeProperty, value); }
}
要するに、
・プロパティの値を格納する変数の宣言部分の代わりに、
依存関係プロパティの登録を行って識別子を取得
・取得した依存関係プロパティの識別子を使って、プロパティ値の取得と設定を
GetValue, SetValue メソッドの引数として識別子を使用する
・GetValue, SetValue メソッドは、Window クラスが継承している DependencyObject
クラスメンバだから、自身のインスタンスからアクセスできる
ってことみたい。
DependencyProperty.Registerメソッドは、基本的に次のように指定すれば OK。
public static readonly DependencyProperty HogeProperty =
DependencyProperty.Register(
"Hoge", // プロパティ名
typeof(bool), // プロパティの型
typeof(HogeClassName), // プロパティを登録した先の所有者型
new PropertyMetadata(false) // メタデータを通じてデフォルト値を設定
);