Estoy desarrollando una aplicación WinForms en C#. Tengo una experiencia limitada en la programación de GUI, y tengo que aprender mucho sobre la marcha. Dicho esto, esto es lo que estoy construyendo.C# WinForms Model-View-Presenter (Vista pasiva)
ver la expresión general de interfaz gráfica de usuario en el siguiente enlace:
GUI http://img227.imageshack.us/img227/1084/program0.jpg
Ahora, he hecho un montón de trabajo ya, pero en el patrón de diseño muy mala Autónoma. No sabía que el proyecto llegaría a un cierto tamaño y, como tal, es hora de hacer una refactorización importante.
He estado estudiando mucho sobre los patrones de diseño de GUI, y el patrón que deseo implementar es la Vista pasiva (ver http://martinfowler.com/eaaDev/PassiveScreen.html). Estoy buscando ayuda sobre cómo unir todo esto.
Antecedentes:
1) En función de lo que el usuario hace clic en el "TreeView", la "lista" en la esquina inferior izquierda se mostrará una lista de objetos que pueden poblar la zona "Editor". Estos objetos pueden ser un TextBox o un DataGridView. El usuario alterna la Lista para elegir lo que quiere ver en el "Editor"
2) El modelo es esencialmente una carpeta con datos y archivos de configuración. Hay un programa externo que se ejecuta en un directorio determinado, crea archivos/carpetas de salida, etc. Este programa que estoy desarrollando está diseñado para administrar/configurar estos objetos de una manera fácil de usar
3) El problema con La forma en que he estado haciendo las cosas es que es casi imposible de probar, y de ahí el paso al patrón de diseño de Vista pasiva MVP-esque
Estoy tratando de hacerlo para que el programa funcione independientemente de la Vista. No he podido encontrar ningún ejemplo donde se use una vista más compleja e interactiva con el patrón de Vista pasiva.
Preguntas:
1) ¿Es necesario poner en práctica una amplia interfaz/vista de todo el "look" del programa, a continuación, aplicar sub-interfaces/sub-puntos de vista de cada uno de los TreeView, Editor, Logger , etc.? ¿O hay una mejor "estructura" para hacer esto?
2) Cuando se trata de "entregar" eventos de la Vista al Presentador/Controlador (cualquiera que sea la terminología que desee utilizar W.R.T. el patrón de diseño de Vista Pasiva), ¿cuál es la forma en que debería estar haciendo esto? A veces tengo propiedades simples que necesitan ser actualizadas, y algunas veces necesito una serie completa de pasos para desarrollar.
Me gustaría sugerencias y consejos sobre este tema. He buscado en Internet y no he encontrado ejemplos adecuados para ayudarme a continuar con este proyecto.
¡Gracias de antemano!
Daniel
Agradezco la respuesta informativa, pero aborda particularmente mis preguntas. ¿Debo usar una Vista (con estos 4-5 subcomponentes con los que el usuario puede interactuar), o debería haber Vistas dentro de Vistas (de ahí las interfaces dentro de las interfaces)? Además, todavía no estoy seguro de la "transmisión" de eventos desde la Vista hasta el Presentador, y aún necesito una aclaración sobre cómo la Vista observa el Modelo. También me preocupa la "estructura" del programa. –
Prefiero descomponerlo en componentes más pequeños, especialmente si desea fomentar la reutilización.Cree vistas que tengan un único propósito pero que se puedan usar juntas para crear una interfaz de usuario compuesta. –
Además, si observa el constructor del presentador, puede ver cómo manejar eventos desde la vista. –