2009-06-28 9 views
1

Dans le modèle MVVM, je ne veux pas penser à la vue lors de la création du modèle. J'utilise donc des propriétés publiques avec des données stockées dans ILists et ainsi de suite. Mais alors mon viewmodel n'est pas informé des modifications apportées à ces listes du côté du modèle. Devrais-je utiliser ObservableCollections dans mon modèle à la place? Mais cela me semble étrange.Conception de modèle MVVM

Répondre

4

Oui, vous devez utiliser ObservableCollections. Je ne sais pas ce qui serait étrange à ce sujet? Tout ce qu'un ObservableCollection fait est de notifier les auditeurs des changements. Cela ne doit pas nécessairement être une interface utilisateur.

Votre ViewModel ne doit pas savoir quoi que ce soit au sujet de la vue réelle de l'utiliser, mais comme il est un Voir modèle, il est ok pour elle d'assumer quelque chose va l'utiliser, donc ObservableCollection est la voie à suivre et aussi, pour autant que je sache, la pratique courante. En outre, les écouteurs savent exactement quels éléments ont été ajoutés ou supprimés, il n'est donc pas nécessaire de mettre à jour toute la liste lorsque des changements se produisent => de meilleures performances pour les mises à jour. C'est aussi ce que Microsoft dit (ne trouve pas l'article à ce sujet maintenant)

+0

C'est ce que je voulais savoir à ce sujet. Merci – apparat

+0

Cela pourrait devenir très cher dans une application de toute taille/complexité. –

3

C'est également la raison pour laquelle la plupart des gens implémentent INotifyPropertyChanged sur leur modèle de données, parce que vous voulez que le modèle de vue soit notifié à chaque fois que les données changements de modèle.

Questions connexes