Ho provato MVP e sembra funzionare benissimo anche con Windows Form. Questo libro contiene un esempio di moduli di Windows con pattern MVP (applicazione di libro paga di esempio). L'applicazione non è così complessa ma ti darà un'idea di come procedere per crearla.
Principi, schemi e pratiche agili in C # ...
È possibile ottenere il codice sorgente nel codice
sorgente
MODIFICARE:
Esistono due varianti del modello MVP (a) Vista passiva e (b) supervisione del controller
Per scenari di database complessi, preferisco seguire il modello di supervisione del controller. Nel supervisionare il modello del controller, la responsabilità della banca dati rimane alla vista. Quindi, per treeview / datagrid questo dovrebbe essere nelle rispettive viste, solo la vista della logica agnostica dovrebbe passare al presentatore.
Consiglio di dare un'occhiata al seguente framework MVP
# MVC - Un framework MVP
Non andare con il nome (è un framework MVP).
Winforms semplici MVP video
Winforms - MVP
Un esempio di gestione dell'elenco a discesa
MVP - DropDownList
Esempio di rilegatura treeview semplice (rilegatura del povero). È possibile aggiungere qualsiasi logica specifica treeview in BindTree ().
Di seguito è riportato lo snippet di codice .... non testato, digitato direttamente dal pensiero ....
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);
}
}