3

私の WPF アプリには 2 つのビューと 2 つのビューモデルがあります。ViewModelLocatorViewModel 間でデータをやり取りするためにMVVM を使用しています。これは推奨される方法ですか?これを達成するためのより良い方法はありますか?現在、このコードを使用してViewModel1のViewModel2のプロパティにアクセスしています

var _viewmodel2 = (Application.Current.Resources["Locator"] as ViewModelLocator).ViewModel2;

ありがとう

4

2 に答える 2

3

あなたが求めているのは、Event Aggregator パターンのようなものです。中央の「アグリゲーター」オブジェクトとサブスクライブ/発生イベント (ペイロード付き) を使用して、データをやり取りします。はい、少し複雑です。シナリオがこれに対して十分に複雑な場合は、以前の SO 投稿からの詳細情報をここに示します。

ただし......シナリオがそれほど複雑でない場合は、ビューモデル A でビューモデル B への参照を維持しても問題ありません。これは、ViewModelLocator で行っていることのようです (これは、実際に舞台裏で DI を使用して、後の ViewModel のインスタンスを解決します)。これは MVVM パターンに違反しません。データ共有の過程でビューモデル全体のイベントをサブスクライブしている場合は、必ず自分でクリーンアップする必要があります (イベント アグリゲーター ソリューションの場合と同じです)。

于 2013-10-30T02:39:56.873 に答える