2011-08-16 24 views
5

Silverlight/WPF DependencyPropertyはデータバインドを有効にし、INotifyPropertyChangedを実装せずにプロパティの値が変更されたことを示します。 DependencyObject、DependencyProperty、DispatcherObjectのいずれもイベントを定義していないときに、DependencyPropertyまたはDependencyObjectがこの変更通知をどのようにして実行するのですか?これはDispatcherObject.Dispatcherプロパティと関連がありますか?DependencyPropertyの仕組みの理解

依存関係プロパティ、またはのDependencyObjectクラスは、ネイティブ サポートが通知 操作データバインディング用のDependencyObjectソースプロパティ値の変化の を製造する目的のためにINotifyPropertyChangedのありません。

この優れた明確化はから逐語を取った:あなたがたDependencyPropertyを登録するときに、値の変更に呼び出されるコールバックを提供し、

まあ

http://msdn.microsoft.com/en-us/library/ms752914.aspx

http://msdn.microsoft.com/en-us/library/ms753358.aspx

答えて

1

Hereさらに詳しい情報があります。 WPFの内部については何も公開されていないと思います。私は間違っているかもしれません。

4

依存関係のプロパティは、バインディングシステムと密接に統合されています。したがって、「プロパティーが変更されたことを通知する」のではなく、依存性プロパティーを設定するコードは、バインディング・システムを直接呼び出して更新するように指示できます。

同様に、継承された/追加されたプロパティのようなものは、任意の子孫要素で更新することができ、レイアウト/メジャー/アレンジを更新することができます。さらに、(StylesまたはControlTemplatesの)トリガーに再評価させることもできます。

Dispatcherは実際には関連していませんが、プロセス中に使用される可能性があります。

要するに、それはWPF/Silverlightに焼き付けられます。

+0

"依存関係のプロパティはDependencyObjectの種類によってのみ使用できます"上記のリンクの参照。 DependencyObjectはDispatcherObjectから派生しています。 –

+0

@Webster - はい、それは本当です。それについて質問がありましたか? – CodeNaked