質問

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

役に立ちましたか?

解決

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

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

他のヒント

有用でよく書かれた唯一の説明は次のとおりです。 http://www.wpftutorial.net/dependencyproperties.html

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

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

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

曖昧さをある程度解消できたと思います:)

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

抜粋:

  

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

     

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

     

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

類推によるコードなしの説明(〜5分)

ストーリーが気に入らない場合は、自分自身を保存してください(約5分)

いくつかの概念を検討する必要があります:

  • ツリーの上位の値の解決/プロパティ値の継承と
  • マルチプロバイダーのサポート
  • 通知の変更

(a)値の解決/プロパティ値の継承

人間の遺伝子の例を使用して、概念を説明しましょう。

全員がほぼ同じ

人間には多くの情報が関連付けられています。無数のデータがあなたに関連付けられています–

  • 指の本数、

  • つま先の数、

  • BRCA2遺伝子の数など

解決したい問題は何ですか

私たちは、すべての情報を手探りすることなく、自分自身について私たちに尋ねる人々に直接回答できるようにしたいと考えています。

では、質問は次のとおりです。どのようにすべてを覚えることができますか?もともと、人々はこのすべてを書き留め始めましたが、すぐに、イエローページの約10冊分を運ぶ必要があることに気付きました–基本的に、アレクサンドリアの全ライブラリ(ハードコピー形式)をバックポケットに入れて、これらすべての質問に答えられるようにします。

解決策:共通情報を1か所に保存します

だから誰かが素晴らしいアイデアを持っていた。彼らは、ほとんどの場合、情報が同じであることに気付きました。例えばほとんどの人が持っています:

  • 1つのハート

  • 1つの顔など

  • 3つのBRCA2遺伝子

すべての人が後部ポケットに約30ポンドの紙を運ぶ必要はありません。すべての情報を 1つの場所、1つの中央ライブラリに保存できます。人々は、その情報を持ち歩くことによって負担を受けることなく自由に歩き回ることができます。

しかし、常に例外があります。...誰もが同じ血液型、または同じ数の毛包を頭に持っているわけではありません。標準との違いや例外がある場合は、本棚全体の本ではなく、バックポケット(辞書など)でそれらの例外を持ち歩くだけです。ほとんどの場合、人々はほとんど同じです-彼らは同じ価値を共有し、これはめったに変わりません。バックポケットに例外を書き留めていない場合は、インタビュアーに共通リポジトリに保存されているデータを参照するだけで済みます。

例:記者がドナルドトランプ大統領にインタビュー**

例でこれを試してみましょう。

Person:Donald Trumpのインスタンスがあります。ニュースレポーターが尊敬する大統領にいくつか質問をしています:

  

“トランプ大統領、HIF1A遺伝子はいくつありますか?”

ドンは背中のポケットをチェックします。彼が持っている遺伝子の数については何もリストされていません。そのため、彼はレポーターに、他の全員が持っているデフォルトの番号を持っていることを伝えます。 「他の全員と同じ」トランプは言う。 "ライブラリで答えを見つけることができます"。そのため、レポーターは単に特定の詳細について調べるために図書館に行きます。

  

“トランプ大統領、あなたはいくつの顔を持っていますか?

この値はローカルで解決できますか?この値はローカルで解決されているように見えます。なぜなら、トランプのバックポケットには答えがあります。2-すぐにレポーターに返されます。

ツリーの上の値の解決

現実には、物事は答えが後ろのポケットにあるか、さもなければ中央図書館にあるよりも少し複雑です。同じ情報を保存できる多くの仲介場所があり、したがって「プロパティの値を解決する」ための理想的な候補になります。だから

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top