C # WinForms Model-View-Presenter (Vista pasiva)

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.

Consulte la interfaz gráfica de usuario general en el siguiente enlace:

GUI http://img227.imageshack.us/img227/1084/program0.jpg

Ahora, ya he hecho mucho trabajo, pero en el muy mal patrón de diseño autónomo. No sabía que el proyecto alcanzarí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 (verhttp://martinfowler.com/eaaDev/PassiveScreen.html) Estoy buscando ayuda sobre cómo unir todo esto.

Antecedentes:

1) Dependiendo de lo que haga clic el usuario en "TreeView", la "Lista" en la esquina inferior izquierda mostrará una lista de objetos que pueden llenar el área "Editor". Estos objetos pueden ser TextBox o 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 dado, crea archivos / carpetas de salida, etc. Este programa que estoy desarrollando está diseñado para administrar / configurar efectivamente 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, por lo tanto, el cambio 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 en el que se use una vista más compleja e interactiva con el patrón de Vista pasiva.

Preguntas:

1) ¿Necesito implementar una interfaz / vista grande para todo el "aspecto" del programa, luego implementar sub-interfaces / sub-vistas para 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 la Vista Pasiva), ¿cuál es la forma en que debería hacer esto? A veces tengo propiedades simples que necesitan ser actualizadas, y a veces necesito toda una serie de pasos para desarrollar.

Me encantarí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 por adelantado!

Daniel

Respuestas a la pregunta(2)

Su respuesta a la pregunta