2012-04-02 43 views
0

多くのViewModelでは、別のViewModelからのコレクションが必要になります。基本的に、各VIewModelにはObservableCollection型のListプロパティがあります。ほとんどの場合、ViewAはVIewModelA(CRUDの場合)とViewModelB.List(読み取り専用の場合)が必要です。別のViewModelからViewModelを参照する必要がある場合

ここで推奨されるアプローチは何ですか?

  1. がViewModelBからViewModelAに同じGetListの手順をコピー/追加
  2. をViewModelAにViewModelBを注入し、EntityBListプロパティを公開しますか?この約1 ViewModelAとviewModelB

答えて

0

私は通常、オプション1を使用します。データを必要とするビューモデルにSharedViewModelシングルトンを注入するとうまくいきます。また、必要に応じて共有データを追加するのも簡単です。

0

1)の両方わからないViewAのXAMLリファレンスの

  • 2)コードを複製する場合、通常はより良い解決策があります。

    シングルトンパターンを使用し、コレクションを保持する1つのクラスを持つことができます。次に、各ViewModelが同じリストにアクセスしています。それをDataAccessorなどと呼んでください。

    3)私は2つの異なるViewModelのビューリファレンスを持っていません。なぜViewModel AとBをマージするだけではないのですか? ViewAを両方とも扱っている場合、なぜ現在は別々のものになっていますか?

  • +0

    いくつかの情報源に相談した後、1)注射をするのが最善です。オプション3)に関しては、これは非常に一般的なシナリオです。 VIewModelBは、ViewA(読み取り専用、おそらく参照エンティティとして)とViewB(CRUD)の両方で使用されます。 – Goran

    関連する問題