MVVM-Paternに関する多くのチュートリアルを見てきましたがINotiyfyPropertyChanged
、ViewModelからビューに情報を送り返したいのにDependency-Propertyまたは-Propertyを取得する必要がある理由がわかりません。
3 に答える
依存関係プロパティは、プロパティが変更されたときの組み込みの変更通知を提供します。つまり、WPF はコントロール値がいつ変更されたかを認識します。
ViewModel タイプは、デフォルトでは変更通知のメカニズムを提供しないため、これらのオプションのいずれもサポートしていない場合、viewModel のプロパティが変更されたときにビューがどのように認識できるのでしょうか?
プロパティ値が変更されたときにビューに通知できるようにするには、viewModel でこれらのオプションのいずれかを使用する必要があります。
これは、コードでプロパティ値が変更されると、ユーザー インターフェイスが更新され、プロパティがユーザー入力によって変更されると、viewModel (および最終的にはモデル) も更新されてこれらの変更が反映されることを意味します。(基本的に、バインディングの両側には、プロパティの変更を相互に伝達する方法が必要です)。
INotifyPropertyChanged
ビューモデルが WPF に固有のものではなく、他のユーザー インターフェイス テクノロジで使用できることを意味するため、インターフェイスは推奨される方法です。また、依存関係プロパティは、から派生した型でのみ使用できますDependencyObject
。
INotifyPropertyChanged
まず、使用する必要はありませんDependencyObject
。
ただし、これがBindingを使用する際の中心的なポイントであり、BindingにはPub / Subメカニズムがあり、これらのPropertyChanged
イベントをリッスンし、Bindingに関連するプロパティが変更された場合にビューの更新を行います。
これに関する詳細は次のとおりです。
INotiyfyPropertyChanged
- このプロパティはビューモデルで使用したため、UI に変更が発生した場合、このプロパティはそれらの変更を反映します。