39 votes

MVVM : CollectionView dans ViewModel ou CollectionViewSource dans xaml ?

Je développe une application WPF utilisant le modèle MVVM et j'ai besoin d'afficher une liste d'éléments dans une ListView (avec filtrage), avec les champs de l'élément sélectionné affichés dans une vue Maître/Détail. Je suis partagé entre les deux façons suivantes de procéder :

  1. Exposer un CollectionView dans mon ViewModel, et le lier à celui-ci.
  2. J'expose une simple IList dans mon ViewModel et j'utilise CollectionViewSource pour créer le CollectionView dans le XAML.

Existe-t-il une méthode reconnue pour ce faire ? Avez-vous une idée de la meilleure façon de procéder ?

33voto

Kent Boogaart Points 97432

Je fais le premier (exposer CollectionView de la VM) mais ce qui compte vraiment, c'est l'endroit où se trouve votre logique de filtrage. Celle-ci doit absolument se trouver dans la VM afin de pouvoir être testée, même si la vue doit câbler l'application CollectionViewSource à la VM. Cela dit, je ne pense pas qu'il y ait quoi que ce soit de particulièrement méchant ou d'anti-MVVM dans le fait d'exposer un CollectionView à partir de votre VM.

3voto

Robert Points 104

Je sais que je réponds un peu tard à votre question mais je viens de la voir aujourd'hui.

J'ai créé des modèles de vue maître/détail qui utilisent le CollectionViewSource et j'ai publié un blog à ce sujet.

J'ai écrit ici sur un modèle de vue pour les tables maître/détail qui utilise : http://reyntjes.blogspot.com/2009/04/master-detail-viewmodel_24.html

Vous pouvez également trouver un modèle de vue pour la classe observablecollection sur les pages de mon blog.

Peut-être qu'il vous sera utile.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X