Donc, qui couvre l`interface que PmodAlbum présente à la vue. Ensuite, je vais regarder comment je fais la synchronisation entre la vue et le modèle de présentation. J`ai mis les méthodes de synchronisation dans la vue et j`utilise la synchronisation à grains grossiers. Tout d`abord, j`ai une méthode pour pousser l`état de la vue dans le modèle de présentation. Je tiens à préciser que je comprends comment les modèles fonctionnent, et ont mis en œuvre la plupart d`entre eux dans une technologie ou une autre. Ce que je suis vraiment à la recherche est l`expérience de quelqu`un avec l`un de ces modèles, et pourquoi ils ne considéreraient pas leur ViewModel un contrôleur par exemple. Ce petit exemple illustre l`essence de l`idée du modèle de présentation-toutes les décisions nécessaires pour l`affichage de la présentation sont faites par le modèle de présentation, laissant la vue pour être tout à fait simple. Un modèle de présentation référencé par une vue maintient généralement le code de synchronisation dans la vue. Étant donné que le code de synchronisation est généralement facile à écrire et qu`il est facile de repérer les erreurs, il est recommandé que le test se produise sur le modèle de présentation et non sur la vue. Si vous êtes obligé d`écrire des tests pour la vue, cela doit être un indice que la vue contient du code qui doit appartenir au modèle de présentation.

Si vous préférez tester la synchronisation, un modèle de présentation qui fait référence à une implémentation de vue est recommandé. ViewModel n`a pas une communication explicitement bavard avec View par rapport à PresentationModel (c.-à-d. qu`il n`appelle pas View beaucoup, le Framework le fait). Mais il a beaucoup de propriétés qui mappez 1 à 1 avec les paramètres de vue. Il contient toujours la même logique pour déterminer la valeur de tous ces paramètres. Lorsque quelqu`un clique sur la case à cocher classique, la case à cocher modifie son état, puis appelle le gestionnaire d`événements approprié dans la vue. Ce gestionnaire d`événements enregistre l`état de la vue vers le modèle de présentation, puis se met à jour à partir du modèle de présentation (je suppose une synchronisation à gros grains ici.) Le modèle de présentation contient la logique qui indique que le champ compositeur n`est activé que si la case à cocher est cochée, de sorte que lorsque la vue se met à jour à partir du modèle de présentation, le contrôle de champ compositeur modifie son état d`activation. J`ai indiqué sur le diagramme que le modèle de présentation aurait généralement une propriété spécifiquement pour marquer si le champ compositeur doit être activé. Cela va, bien sûr, juste retourner la valeur de la propriété isClassical dans ce cas-mais la propriété distincte est importante parce que cette propriété encapsule la façon dont le modèle de présentation détermine si le champ compositeur est activé-indiquant clairement que Cette décision relève de la responsabilité du modèle de présentation.

Les boutons appliquer et annuler délèguent ce qu`il faut faire au modèle de présentation. Comme je l`ai d`abord examiné modèle de présentation dans le .NET Framework, il semblait que la liaison de données fourni une excellente technologie pour rendre le modèle de présentation fonctionne simplement.