140

.Net の依存関係プロパティとは (特に WPF コンテキストで)。通常の物件との違いは?

4

3 に答える 3

96

私が役に立ち、よく書かれている唯一の説明はこれです:http://www.wpftutorial.net/dependencyproperties.html

基本的に、DependencyProperties は、クラス内のフィールドのセッター/ゲッターであるだけでなく、実行時に実際の値を動的に取得するという点で、通常のプロパティとは異なります。DPのSetValue()メソッドは非常に単純で、プロパティのローカル値を指定した値に設定します。ただし、DependencyProperty から取得しようとするとGetValue()、最初にローカル値が検索されます。存在しない場合 (通常のプロパティとは異なり、DependencyProperties で実行可能)、そのような値が見つかるまで論理 UI ツリーを上に進みます。フレームワークがローカル値を見つけることなくツリーの最上部に到達した場合、定義済みのデフォルト値をプロパティの値として使用します。

このメソッドを使用すると、ユーザーが明示的に設定した値のみがローカルに格納されるため、DependencyProperties は通常のプロパティよりも少ないメモリを消費できます。

また、前述のように、DependencyProperties を使用すると、XAML コードでそれらにバインドし、それらにトリガーを設定することもできますが、これは通常のプロパティでは許可されていません。

あいまいさの一部をなんとかクリアできたことを願っています:)

于 2012-10-16T16:02:58.693 に答える
91

依存関係プロパティは、DependencyObject から派生するクラスのプロパティであり、単純にバッキング フィールドを使用して値を格納するのではなく、DependencyObject でいくつかのヘルパー メソッドを使用するという点で特別です。

それらの最も優れた点は、データ バインディング用のすべての配管が組み込まれていることです。それらに何かをバインドすると、変更時に通知されます。

于 2009-03-06T00:43:00.353 に答える
36

http://techpunch.wordpress.com/2008/09/25/wpf-wf-what-is-a-dependency-property/は、WF と WPF の両方のコンテキストにおける依存関係プロパティの適切な説明を提供します。

抜粋:

キーポイント – 依存関係プロパティの値が解決される

依存関係プロパティの最終的な目標は、他のプロパティと同様に、状態を管理することです。ただし、通常の .Net プロパティとは異なり、ローカル プロパティ値はインスタンス変数に格納されません。

代わりに、依存関係プロパティが依存関係プロパティ フレームワークに登録され、基になるプロパティ値が解決されます。つまり、値は、プロパティ登録によって定義された規則に基づいて、依存関係プロパティ フレームワークによって決定されます。

于 2009-03-06T00:40:42.463 に答える