依存関係プロパティって何?

はじめに

通常のプロパティと依存関係プロパティの違いをちゃんと理解していなかったので調べてみました。

MSDN には次のように書かれています

依存関係プロパティの目的は、他の入力の値に基づいてプロパティの値を計算する方法を提供することです。他の入力には、テーマやユーザー設定などのシステム プロパティ、データ バインディングやアニメーション/ストーリーボードなどのジャスト イン タイムプロパティ判定機構、リソースやスタイルなどの多目的のテンプレート、要素ツリー内の他の要素との親子のリレーションシップから判断される値などがあります。また、依存関係プロパティを実装して、自己完結型の検証、既定値、他のプロパティに対する変更を監視するコールバック、およびランタイム情報の可能性がある情報に基づいてプロパティ値を強制するシステムを提供できます。既存のプロパティの実際の実装をオーバーライドしたり新しいプロパティを作成したりするのではなく、依存関係プロパティメタデータをオーバーライドすることによって、派生クラスで既存のプロパティの特定の特性を変更することもできます。

http://msdn.microsoft.com/ja-jp/library/ms752914.aspx

なっ・・・長い!

分かりにくいですね

重要そうなところを抜き出して、整理してみます。

依存関係プロパティって何?

他の入力の値に基づいてプロパティの値を計算する方法を提供するためのもの。

他の入力って何?

  • テーマ
  • ユーザー設定
  • データバインディング
  • アニメーション
  • ストーリーボード
  • リソースやスタイルなどの多目的のテンプレート
  • 要素ツリー内の他の要素との親子のリレーションシップから判断される値

最後のは、親要素にセットした値が子要素にも反映される仕組みのことですね(DataContext とか)。

で、何ができるの?

  • 自己完結型の検証
  • 規定値
  • 他のプロパティに対する変更を監視するコールバック
  • プロパティ値を強制するシステム

などなど。

う〜ん・・・

なんとなく分かるけれど、自分の中でしっくりきません><