web-dev-qa-db-ja.com

MVVM:ViewModelのCollectionViewまたはxamlのCollectionViewSource?

MVVMパターンを使用してWPFアプリケーションを開発していますが、選択したアイテムのフィールドがマスター/詳細ビューに表示された状態で、ListViewにアイテムのリストを表示する必要があります(フィルタリングあり)。私はこれを行う次の2つの方法の間で引き裂かれています。

  1. ViewModelでCollectionViewを公開し、これにバインドします。
  2. ViewModelでプレーンなIListを公開し、CollectionViewSourceを使用してXAMLでCollectionViewを作成します。

これを行うための受け入れられた方法はありますか?最善の方法について何か考えはありますか?

39
Grokys

私は前者を実行します(VMからCollectionViewを公開します)が、本当に重要なのはフィルタリングロジックがどこにあるかです。ビューがCollectionViewSourceをVMに接続する必要がある場合でも、テストできるように、それは間違いなくVMにあるはずです。とはいえ、私は思いませんVMからCollectionViewを公開することに関して、特に厄介な、または反MVVMがあります。

33
Kent Boogaart

私はあなたの質問に答えるのが少し遅れていることを知っていますが、今日それを見ました。

CollectionViewSourceを使用するマスター/詳細ビューモデルを作成し、ブログに掲載しました。

ここで使用するマスター/詳細テーブルのビューモデルについて書きました: http://reyntjes.blogspot.com/2009/04/master-detail-viewmodel_24.html

Observablecollectionクラスのビューモデルは私のブログページにもあります。

多分あなたはそれがあなたに役立つと思うでしょう。

3
Robert