6

MVVM を使用して記述されている WPF アプリについて考えてみましょう。アプリは従業員 (FirstName、LastName、Title) のリストを表示する必要があり、複数選択して削除できます。

この場合のモデルは「Employee」であり、INotifyPropertyChangedを実装します。

ビューは、従業員のコレクションを表示するために XAML を実装する" EmployeeListView " になります。

ViewModel は「EmployeeListViewModel」であり、ObservableCollectionを公開し、 EmployeeListViewにバインドできます。

私の質問は次のとおりです。「 IsSelected」プロパティはどこに存在する必要がありますか?

  1. モデルで?(私はこの考えが好きではありません.モデルは現在、ビューでのみ必要とされ、実際のドメインオブジェクトとは何の関係もないプロパティを公開しているため、ビューを別の方法で実装して許可しなかった場合、このプロパティは役に立たないでしょう.複数の従業員を一度に削除します)。
  2. EmployeeListViewModel」では、別の Dictionary コレクションとして、従業員が選択されているかどうかを追跡しますか? (または、選択したすべての従業員を含む HashSet だけでも)。ビューのバインディングが単純ではなくなったため、これはあまり好きではありません。
  3. Employee オブジェクトをラップし、IsSelected プロパティを公開する別の EmployeeViewModel を実装します。次に、EmployeeListViewModel はそのコレクションを ObservableCollection として公開します。私はこのソリューションが一番気に入っていますが、View ごとに 1 つの ViewModel があり、この場合、自分のビューには 2 つの View-Model があると常に考えていました。それは MVVM パターンからの逸脱ですか、それとも MVVM を実装する一般的な方法ですか? (参考?)
4

1 に答える 1