DependencyProperty(依存関係プロパティ)

これもWPF実装時に、理解する必要のある、値を保持するための機構。

第3回 XAMLコードから生成されるプログラム・コードを理解する
より、依存関係プロパティは、以下のような目的を持っている。

包含継承: 親要素で設定した値をそのまま継承して使うための機構。
リソース: 1カ所で定義したオブジェクトを複数カ所から参照するための、リソースの定義/参照機構。
スタイル: HTMLでいうところのCSSのようなスタイル設定機構。
データ・バインディング: モデルとビューの間など、異なるオブジェクト間で値を結び付ける(一方での値の変更を他方に通知し、即座に反映させる)機構。

WPF実装の肝であるデータ・バインディングと密接な関係にある。
というか、依存関係プロパティ(あるいは添付プロパティ)でなければ、データ・バインディングはできない。
定義方法は見た目ややこしいけど、VS2010等のIDEには、コードスニペットが用意されている。
"propdp"で、TABキーを押すと、実装のテンプレートが生成される。便利になったもんだ。

/// <summary>
/// 依存関係プロパティをCLRプロパティの様に扱う為のプロパティ
/// </summary>
public bool IsJumping {
get {return (bool)GetValue(IsJumpingProperty);}
set {SetValue(IsJumpingProperty, value);}
}

/// <summary>依存関係プロパティ本体</summary>
public static readonly DependencyProperty IsJumpingProperty =
DependencyProperty.Register("IsJumping", typeof(bool),
typeof(MainWindow), new UIPropertyMetadata(false));

依存関係プロパティは、DependencyProperty.Registerメソッドで生成される。このstatic readonlyな変数が本体であり、
上の(IsJumping)プロパティは、CLRプロパティみたく使うための窓口なわけだ。
詳細は、上のリンクをよく読んだ方が良いな。
この依存関係プロパティは、最終的な値(実行時に使用される値)を決めるにあたって、やや複雑なステップを踏む。
STEP1.基本の値を決める(Determine Base Value)
STEP2.評価する(Evaluate)。ただし、 STEP1の値が、System.Windows.Expressionを継承したクラスのインスタンスの場合に限る。
STEP3.アニメーションを適用する(Apply Animation)
STEP4.値を強制させる(Coerce, コワース)
STEP5.値を検証する(Validate)

詳細は、以下のURLに載っている。
Dependency Properties
英語サイトなんだけど、非常に詳しく書かれている。自分でメモる必要もないんだよな~Orz。
スポンサーサイト
当サイトは基本をすっ飛ばしてます。基本文法等は、@ITをどうぞ
カテゴリー: WPF4 | コメント: 0 | トラックバック: 0


この記事へのコメント

コメントの投稿

非公開コメント


サイドバー背後固定表示サンプル

当ブログに書かれたソースコードは流用自由です。

バグ、スペルミス等はありうる事です。

ご利用の際は自己責任でお願いしますm(_ _)m