2009-12-15 9 views
0

J'essaie de comprendre comment implémenter MVC dans les winforms. J'ai donc rassemblé les éléments suivants;Implémentation de MVC dans Winforms

  1. Une forme principale qui est divisée en 2 volets (gauche/droite) le volet de gauche affichera une liste de clients.
  2. Un formulaire de détails de commande qui listera toutes les commandes passées pour le client sélectionné sur le formulaire principal. Ce formulaire de détails de commande sera affiché dans la partie droite du formulaire principal.

Maintenant, j'ai défini une interface de vue pour chacun et un présentateur. Comment le présentateur des détails de la commande doit-il mettre en attente le client sélectionné dans l'autre vue?

+0

@JohnFx. Pourquoi le changement de MVP à MVC – David

Répondre

0

Vous avez besoin d'un mécanisme de publication et d'abonnement. Chaque vue peut annoncer ses changements d'état (événement de changement de sélection par exemple)

Les composants concernés peuvent s'abonner à ces événements.

Ce découple les deux points de vue - cela signifie que vous pourriez avoir un vitres supplémentaires qui affiche la page web du client, graphique de l'historique des commandes, photo du vendeur ...

+0

En termes de MVP serait-il le présentateur de détails de la commande qui aurait à s'abonner à l'événement de la vue principale, si oui, comment y parviendrait-il. – David

0

a) définir un événement - dire SelectionChange . Si devrait être de haut niveau et exprimé en termes de données du modèle

b) chaque vue avec une sélection (votre volet gauche par exemple) expose cet événement

c) une vue qui veut souscrire (votre volet droit par exemple) se fixe à l'événement exposé par (b)

Vous devriez lire sur la définition et l'utilisation des événements (la plupart des bons C# livres auront cette)

Là où ça devient intéressant est alors d'avoir une certaine forme de courtage système afin que les consommateurs puissent trouver des éditeurs d'événements, cela supprime le besoin de (c) connaître le nom de (b)

Pour votre système simple 2 volet ce que je viens de décrire est peut-être exagéré, mais il sera intéressant de mettre en œuvre et ajoute plus de flexibilité à long terme

Questions connexes