Question

Comme je creuse plus loin dans MVVM et MVVM lumière je reconnus, qu'il n'y a pas de classe de base fourni MVVM-lumière pour les modèles.

Mais si je comprends bien, la messagerie et les notifications soulevant pourrait également se produire dans un modèle. Je trouverais que la messagerie viendrait très pratique au moins dans la communication entre les modèles.

Je viens donc décidé de tirer mon modèle de ViewModelBase, même si certaines des propriétés (comme les temps de conception) sera utilisé.

Mais plus je regarde cela, plus je pense avoir manqué quelque chose. Est-il considéré comme « mauvaise pratique » pour tirer mes modèles de ViewModelBase?

Et est-il autorisé à utiliser la messagerie pour la communication du modèle?

Était-ce utile?

La solution

Derive vos classes vue-modèle de tout ce que vous aimez ... MVVM lumière offre la ViewModelBase de fournir une implémentation de ICleanUp - ce qui est bon pour la gestion du cycle de vie des objets ViewModel. Mon choix a été de mettre en œuvre tous les échafaudages pour les notifications Modifier la propriété dans une classe de base, déduisons de celle pour les classes de modèle. A propos des seules suggestions fortes que j'ai en ce qui concerne les classes de modèles sont:

  1. Une fois que la taille ne convient pas à tous . Comment vous stockez vos données peuvent être différentes de la façon dont vous interagissez avec des données et des objets ViewModel devrait viser à soutenir l'interaction, pas de stockage, et si vous avez besoin d'interagir avec les mêmes données (modèle) de deux façons très différentes, puis concevoir deux différentes ViewModels pour soutenir ces différentes interactions.
  2. Utilisez-attributs pour annoter les modèles (à la System.ComponentModel). Vous pouvez obtenir beaucoup de votre travail de validation fait de cette façon -. Et validation commentaires est la responsabilité de la couche de présentation (Voir + ViewModel), pas le domaine de problème (à savoir le modèle)

Vraiment bonnes classes ViewModel sont aussi généralement assez apatride qu'ils peuvent être recyclés / réutilisés dans une seule interaction de l'utilisateur, telles que les grandes listes de données peuvent être virtualisés (WPF prend en charge la virtualisation) pour sauvegarder la RAM.

Rappelez-DRY (Ne pas répéter vous-même), KISS (Keep It Simple, Stupid!) Et YAGNI (yagni) - sont les principes que vous devez garder à l'esprit ci-dessus tout principes de conception académique. J'ai litereally perdu semaines sur une application WPF mise en œuvre des modèles MVC / MVVM académique parfait, pour constater que qu'ils nuisaient forment la compréhensibilité globale de la solution finie. Alors ... restez simple! :)

Autres conseils

Je prendrais un coup d'œil à la EventAggregator dans le Composite Application Library. La réponse dans ce poste a une bonne description. Jeremy Miller après va dans un peu plus en détail.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top