Wypróbowałem MVP i wydaje się, że działa świetnie również z formularzami Windows. Ta książka zawiera przykład formularzy okienkowych ze wzorem MVP (przykładowa aplikacja płacowa). Aplikacja nie jest tak skomplikowana, ale daje wyobrażenie o tym, jak ją stworzyć.
Zwinne zasady, wzorce i praktyki w języku C # ...
Możesz pobrać kod
źródłowy w Kod źródłowy
EDYTOWAĆ:
Istnieją dwie odmiany wzorca MVP (a) Widok pasywny i (b) Kontroler nadzorujący
W przypadku złożonych scenariuszy wiązania danych wolę używać wzorca kontrolera nadzorującego. W nadzorowaniu wzorca kontrolera odpowiedzialność za wiązanie danych spoczywa na widoku. Tak więc w przypadku treeview / datagrid powinno to znajdować się w odpowiednich widokach, tylko logika agnostyczna widoku powinna zostać przeniesiona do prezentera.
Polecam przyjrzenie się poniższej strukturze MVP
MVC # - Framework MVP
Nie używaj nazwy (to framework MVP).
Prosty plik wideo
WinForm MVP Winforms - MVP
Przykład radzenia sobie z rozwijaną listą
MVP - DropDownList
Prosty przykład wiązania drzewa (wiązanie dla biednych). Możesz dodać dowolną logikę specyficzną dla drzewa w BindTree ().
Poniżej znajduje się fragment kodu… nie przetestowany, wpisany bezpośrednio z myśli…
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);
}
}