1
MVVM-Lightフレームワーク(C#)を使用してビューベースのアプリケーションを開発しています。基本的には、コンテンツコントローラーで開いている単一のウィンドウがあり、ビューモデルによってコンテンツコントローラー内のビューが決まります。ビューベースのWPFアプリケーションでViewModelからビューを変更する
ビューを変更する個々のビューモデルからコマンドを実行したいとします。たとえば、ユーザーが「送信」を押すと、アプリケーションはメインビューに戻ります。
MainWindowViewModel
の変数CurrentViewModel
にリンクするために、各ビューモデルにタイプWindow
のParentWindow引数が必要なのは唯一のことです。これを行うより良い方法はありますか?
'CurrentViewModel'は、メインウィンドウが待機するというイベントを持つことができます。全ての 'CurrentViewModel'型が既に基底から継承されていれば簡単でしょう – Jonesopolis
私はもっと良い方法はあなたのViewModelの中にビューの参照を置くことさえ考えないことだと思います。これは、ViewModelのリストでDataTemplateを利用することで実現できます。そして、あなたはおそらく、一つのビューから別のビューへのバインディングやシフトのためにSelectedItemプロパティが必要になるでしょう。 – tgpdyk
@Jonesopolisそれはどういう意味ですか?あなたは少し拡大できますか? – jaysoncopes