アイテムのリストを表示し、テキストボックスに入力してこのリストをフィルタリングする機能を提供する wpf アプリケーションを実装しています (非常に簡単なユースケースだと思います)。
MVVM 構造を使用しています。
私の質問は、リストをフィルタリングするのは誰の責任ですか? ビューまたはビューモデル? xaml.cs で "OnTextChanged" イベントを実装する必要がありますか、または ViewModel でプロパティを使用し、PropertyChanged を使用してリストをフィルター処理する必要があります。
フォローアップの質問は、ViewModel で BindingList/ObservableCollection を使用する必要がありますか、それとも ICollectionView を使用して ItemsControl をバインドする必要がありますか?
両方の方法を試しましたが、どちらも機能します。ViewModel に責任を与えると、View の背後にあるコードは空のままになりますが、一方で、フィルタリングを適用するのが ViewModels の責任であるとは完全には確信していません (たとえば、ビューごとに異なるフィルタリングが必要になる場合があります)。
何かご意見は?
ありがとう、ロエル
編集:
それをViewModelに入れることについて私を悩ませているのは、(私の現在の実装では)System.Windows.Dataへの参照があるということです。これは明らかに View に関連するものであるため、ViewModel には含めたくないリファレンスです。または、何か不足していますか?関連コード:
ICollectionView customerView = CollectionViewSource.GetDefaultView(customers);