2009-12-30 5 views
1

Quelqu'un peut-il me dire quel composant de la variante MVP - Contrôleur de supervision a la responsabilité de mettre en œuvre la logique liée à l'activation/désactivation des éléments de l'interface utilisateur?MVP - Contrôleur Superviseur

Par exemple, j'ai une vue qui a une case à cocher et un certain nombre de zones de texte. Maintenant 2 des zones de texte ne doivent être activées que si la case est cochée.

La logique de contrôle devrait-elle être la responsabilité du présentateur ou du modèle?

Répondre

2

Supervising Controller suppose que

  • Voir interagit avec le modèle pour liaison de données simple
  • View est mis à jour par le présentateur et par liaison de données

Donc, fondamentalement, afin de trouver le composant responsable, vous devez identifier qui a assez d'informations pour faire la mise à jour. Si l'état de case à cocher est directement mappé sur Modèle, View est le bon endroit pour le faire par liaison de données. Si, par contre, l'état est calculé par le présentateur suite à une réaction à l'interaction de l'utilisateur, vous pouvez mettre à jour View from Presenter.

+0

L'état vérifié de la case à cocher est directement mappé au modèle. Donc vous dites que ce serait la responsabilité des vues de désactiver les 2 zones de texte. Je ne suis pas sûr de ce que vous entendez par «grâce à la liaison de données». Pouvez-vous s'il vous plaît expliquer. Merci – David

+0

Par exemple, si votre vue affiche la liste des utilisateurs et l'objet Utilisateur du modèle a la propriété IsLocked booléenne. Selon l'affichage de la liste des utilisateurs, vous pouvez sélectionner en cochant les cases uniquement les utilisateurs déverrouillés. Dans ce cas, la propriété CheckBox.Enabled sera liée à User.IsLocked car la logique est plutôt triviale. Cependant, si le calcul de l'état n'est pas trivial, je suggère de le mettre dans Presenter. –