Pour créer une vue d'application composite dans mon application, avec différentes régions, jusqu'à présent, j'ai toujours utilisé le présentateur de contenu et DataBinding utilisé pour définir son contenu.Prisme, régions, cordes magiques et refactoring: ai-je oublié quelque chose ici?
Si je voulais changer son contenu, je voudrais juste avoir à utiliser un agrégateur d'événements, publier un ViewZoneChangedEvent, abonnez-vous à elle dans la fenêtre « shell », et mettre à jour le viewmodel en conséquence afin que les nouvelles données seraient disponible pour la liaison et l'interface utilisateur être mis à jour.
Maintenant, je suis récemment tombé sur ces régions dans Prism, en fait je les avais vues depuis un moment mais je ne me sentais pas à l'aise avec elles, mais depuis Prism est un guide des meilleures pratiques : Laissez-moi vous expliquer pourquoi je me sens mal à l'aise. Avec ma vieille façon de faire, il n'y a pas de couplage avec le XAML. vous ne mentionnez jamais de chaîne magique spécifique qui devrait être présente dans le XAML, et je pense que c'est essentiel, puisque le style peut changer. Si au moins les régions effectuent une vérification à la compilation des noms de régions (vérifiez qu'il existe réellement quelque part) qui s'appliquerait en utilisant des noms de régions valides et serait très utile lors du refactoring, mais pour autant que je sache, il n'y a pas telle chose. Certaines personnes utilisent enums et la méthode ToString
d'une énumération pour la convertir en chaîne et l'utiliser comme un nom de région, mais là encore, pour autant que je sache, il n'y a pas de routine pour vérifier si la chaîne tapée est valide erreur lors de la compilation de la façon dont il est fait pour Brushes.InValidColor par exemple. Donc, ma question est la suivante: qu'est-ce que les régions de prisme apportent à la table par rapport à la vieille liaison (plus eventAggregator si vous souhaitez communiquer à travers ViewModels)?
et mes hypothèses sont-elles vraies au sujet de la vérification de compilation des noms de région?
En outre, après avoir réfléchi et lu quelques articles ici et là, j'ai compris que, lorsqu'elles sont utilisées correctement, les régions pourraient être utilisées pour avoir une meilleure séparation et éviter que ViewModels instancie les Vues. voir le blog génial de Mark à ce sujet! http://www.developmentalmadness.com/archive/2009/10/15/mvvm-with-prism-101-ndash-part-3b-view-injection-and.aspx –