2012-08-30 4 views
1

J'ai besoin d'aide sur le modèle MVVM.Un ViewModel partagé entre plusieurs vues

J'ai créé un ViewModel qui exposent les données et les commandes à afficher dans un listview dans une vue nommée A.

Ce ViewModel est également utilisé dans une vue nommée B. i juste besoin Dans ce point de vue, d'exposer quelques-uns propriétés et pas de commandes, mais je devais créer 2 autres propriétés.

Vaut-il mieux créer un ViewModel plus spécifique pour View B même s'il s'agit du même objet?

Répondre

0

Difficile de répondre. Mais je peux vous dire ce que nous faisons pour notre application. Nous avons un viewmodel, qui est plus ou moins indépendant de la vue, il fonctionne comme un wrapper pour nos données d'entreprise et contient tout ce qui est utilisé dans presque toutes les parties où ce modèle est montré. Maintenant, pour la partie vue, nous avons des viewmodels très spécifiques. Comme un ProjectTreeViewModel ou un SearchResultViewmodel, avec les modèles de vue Item correspondants pour les deux. Le Item viewmodel n'a pas besoin d'implémenter toute la logique, il a juste besoin d'agréger le modèle général de la vue du modèle. Pour donner une meilleure analogie:

Si vous avez un modèle File, Drive et Folder. Vous devez créer un FileViewModel, DriveViewModel et FolderViewModel. Mais seulement un ExplorerItemViewModel. Cela doit seulement fournir une propriété pour exposer le modèle de vue sous-jacent. Le reste dépend de vos modèles de données.

+0

Je travaille plus ou moins de la même manière. Le ViewModel en question encapsule un objet métier. Merci pour vos réponses – Xxbz

7

Je suggère la composition, avoir deux modèles de vue qui ont tous deux une propriété contenant un modèle de vue qui détient les propriétés communes. Les deux modèles de vue ne doivent alors avoir que leurs autres propriétés et commandes spécifiques.

Questions connexes