He intentado MVP y parece funcionar muy bien con los formularios de Windows también. Este libro tiene un ejemplo de formularios de Windows con patrón MVP (aplicación de nómina de muestra). La aplicación no es tan compleja, pero le dará una idea sobre cómo crearla.
Principios, patrones y prácticas ágiles en C # ...
Puede obtener el código fuente en
Código fuente
EDITAR:
Hay dos variaciones del patrón MVP (a) Vista pasiva y (b) controlador supervisor
Para escenarios de enlace de datos complejos, prefiero ir con el patrón del controlador de supervisión. Al supervisar el patrón del controlador, la responsabilidad de vinculación de datos recae en la vista. Por lo tanto, para treeview / datagrid, esto debería estar en las vistas respectivas, solo la lógica agnóstica de la vista debería pasar al presentador.
Recomendaré echar un vistazo al siguiente marco MVP
MVC #: un marco MVP
No use el nombre (es un marco MVP).
Winforms simple MVP video
Winforms - MVP
Un ejemplo de cómo lidiar con la lista desplegable
MVP - DropDownList
Ejemplo simple de enlace de vista de árbol (enlace de pobre). Puede agregar cualquier lógica específica de vista de árbol en BindTree ().
A continuación se muestra el fragmento de código ... no probado, directamente tecleado desde el pensamiento ...
public interface IYourView
{
void BindTree(Model model);
}
public class YourView : System.Windows.Forms, IYourView
{
private Presenter presenter;
public YourView()
{
presenter = new YourPresenter(this);
}
public override OnLoad()
{
presenter.OnLoad();
}
public void BindTree(Model model)
{
// Binding logic goes here....
}
}
public class YourPresenter
{
private IYourView view;
public YourPresenter(IYourView view)
{
this.view = view;
}
public void OnLoad()
{
// Get data from service.... or whatever soruce
Model model = service.GetData(...);
view.BindTree(model);
}
}