0

この UI は、(Person.xaml) を保持するナビゲーション フレームを含む Main.xaml で構成されているため、2 つの異なるビューモデルが関係しています。

ここに画像の説明を入力

Main.xaml のメニューがクリックされたときに、データグリッドのコンテンツをフィルター処理したいと考えています。

  • 人 (すべて表示)
  • 50以上のスコア
  • スコアが 50 未満

私のアプローチは、MainViewModel から送信される特定のメッセージを PersonViewModel にサブスクライブさせることで、MVVM ライト メッセージングを使用することです。これは機能しますが、これを行う他の方法はありますか (ベスト プラクティス)。

これを解決するより良い方法があれば、異なるビューモデルの UI 要素が通信する必要があるすべてのシナリオに MvvmLight Messaging を実装したくありません。

4

3 に答える 3

2

MVVM ライトを使用している場合は、ViewModelLocator でこれらのビューモデルを作成したと思います。したがって、アプリケーション内のビューモデル間でアクセスするために使用してください。

もう 1 つのアプローチは、Unity や SimpleIoC などのある種の IoC コンテナーを使用することです。

これがお役に立てば幸いです。

于 2012-06-26T18:42:01.377 に答える
1

MVVM ライトも使用します。あなたの要件の私の理解から。おそらく、単一の DomainContext を使用して、すべてのエンティティをそれにロードし、クリック項目ごとにコンテキストを照会することができます。

コンテキストを取得したら、基本的に動的にクエリを実行できます。これが私のコードの1つです。

 GetUserBUGroups = SecurityDomainContext.Current.UserBUGroups.Where(ub => ub.UserID == GetUsers.UserID).OrderBy(o => o.BUGroup.BUGroupDesc).ToList();
于 2012-06-26T19:45:50.233 に答える
0

このような単純なシナリオでは、複数の ViewModel を使用するのは適切ではないようです。フィルター オプションを PersonViewModel に直接挿入する必要があると思います

于 2012-06-26T18:25:36.543 に答える