Je développe une application WinForms en C#. J'ai une expérience limitée dans la programmation GUI, et je dois apprendre beaucoup à la volée. Cela étant dit, voici ce que je construis.C# WinForms Modèle-View-Presenter (Vue passive)
Voir l'aspect général de l'interface graphique à l'adresse suivante:
GUI http://img227.imageshack.us/img227/1084/program0.jpg
Maintenant, je l'ai fait beaucoup de travail déjà, mais dans le modèle de conception autonome très mauvais. Je ne savais pas que le projet atteindrait jamais une certaine taille, et, en tant que tel, il est temps de faire un refactoring majeur.
J'ai étudié beaucoup sur les modèles de conception GUI, et le modèle que je souhaite mettre en œuvre est la vue passive (voir http://martinfowler.com/eaaDev/PassiveScreen.html). Je cherche de l'aide sur la façon de tout rassembler.
Contexte:
1) En fonction de ce que l'utilisateur clique dans le « TreeView », la « liste » dans le coin inférieur gauche affiche une liste d'objets qui peuvent renseigner la zone « Editeur ». Ces objets peuvent être un TextBox ou un DataGridView. L'utilisateur bascule la liste pour choisir ce qu'il veut voir dans l'éditeur.
2) Le modèle est essentiellement un dossier avec des fichiers de données et de configuration. Il y a un programme externe qui s'exécute sur un répertoire donné, crée des fichiers/dossiers de sortie, etc. Ce programme que je développe est conçu pour gérer/configurer ces objets de manière conviviale et conviviale.
3) Le problème avec le comme je l'ai fait, c'est qu'il est presque impossible de tester, et donc le passage au modèle de conception MVP-esque Passive View
J'essaie de faire en sorte que le programme fonctionne indépendamment de la vue. Je n'ai pas réussi à trouver d'exemples où une vue interactive plus complexe est utilisée avec le pattern Passive View.
Questions:
1) Ai-je besoin de mettre en œuvre une grande interface/vue pour l'ensemble du « look » du programme, puis mettre en œuvre des sous-interfaces/sous-vues pour chacun des TreeView, éditeur, enregistreur , etc.? Ou y a-t-il une meilleure «structure» pour le faire? 2) Quand il s'agit de «transférer» des événements de la vue au Presenter/Controller (quelle que soit la terminologie que vous souhaitez utiliser, utilisez le pattern de conception Passive View), comment dois-je procéder? Parfois, j'ai des propriétés simples qui ont besoin d'être mises à jour, et parfois j'ai besoin de toute une série d'étapes à déplier.
J'aimerais des suggestions et des conseils sur ce sujet. J'ai parcouru Internet, et je n'ai pas trouvé d'exemples adéquats pour m'aider à poursuivre ce projet.
Merci d'avance!
Daniel
J'apprécie la réponse informative, mais elle répond particulièrement à mes questions. Devrais-je utiliser une vue (avec ces sous-composants 4-5 avec lesquels l'utilisateur peut interagir), ou devrait-il y avoir des vues dans les vues (donc des interfaces dans les interfaces)? De plus, je ne suis toujours pas certain du «transfert» des événements de la vue au présentateur, et j'ai encore besoin d'éclaircissements sur la façon dont la vue observe le modèle. Je suis également préoccupé par la «structure» du programme. –
Je préfère le décomposer en plus petits composants, surtout si vous voulez encourager la réutilisation.Créez des vues qui ont un seul but, mais qui peuvent être utilisées ensemble pour créer une interface utilisateur composite. –
En outre, si vous regardez le constructeur du présentateur, vous pouvez voir comment gérer les événements de la vue. –