私はMVVM WPFアプリケーションを構築しています。そこには、ViewModel(VM)をデータコンテキストとして使用する親ビュー(V)に複数の子ビューがロードされたウィザードがあります。 MVVMのパターン原則の1つは、VMにバインドされているVについての知識がVMに与えられてはならないということです。この場合、VMは実際にVを認識しませんが、VM(1)は異なる子ビュー(異なるステップ)からなるリストプロパティを管理します。(2)CurrentView
という名前の別のプロパティがあります。要素をリストに追加します。 CurrentView
はV.MVVM ViewModel and childビュー
ContentControl
に結合している私の質問があるさ:
- ですVM内の(子)ビューを管理しても大丈夫でしょうか?換言すれば、VMは親Vについては知らないが、どの子ビューがロードされるべきかを知っている。
- 異なる子ビューに対して異なる子VMを使用するのではなく、ただ1つの親VMを親Vにバインドします。子Vがロードされると、それは含まれている親Vと同じデータコンテキストを共有できます。正しいやり方は?
子VMに自分自身のデータを管理させる必要がありますか(つまり、手順3では手順1のものが必要かもしれません)、親VMのすべてを処理するだけですか? – tab87vn
@ tab87vn、そこにはいくつかの方法があります:(1)親ビューモデルに、各子ビューモデルの変更通知をリッスンして共有状態を管理/編成してから、他の子ビューモデルに通知する(2)親ビューモデルを残して、子ビューモデルにメッセンジャー(ほとんどのMVVMライブラリがサポートする)を使用して直接対話させることができます。 – devuxer