Ich habe MVP ausprobiert und es scheint auch mit Windows Forms hervorragend zu funktionieren. Dieses Buch enthält ein Beispiel für Windows-Formulare mit MVP-Muster (Beispiel für eine Gehaltsabrechnungsanwendung). Die Anwendung ist nicht so komplex, gibt Ihnen jedoch eine Vorstellung davon, wie Sie sie erstellen.
Agile Prinzipien, Muster und Praktiken in C # ...
Sie können den Quellcode erhalten
Source Code
BEARBEITEN:
Es gibt zwei Variationen des MVP-Musters: (a) Passive Ansicht und (b) Überwachung des Controllers
Für komplexe Datenbindungsszenarien bevorzuge ich das Supervising-Controller-Muster. Bei der Überwachung des Controller-Musters liegt die Verantwortung für die Datenbindung bei der Ansicht. Für Treeview / Datagrid sollte dies also in den jeweiligen Ansichten sein, nur die viewunabhängige Logik sollte auf den Präsentator übertragen werden.
Ich empfehle einen Blick auf das folgende MVP-Framework
MVC # - Ein MVP-Framework
Gehen Sie nicht mit dem Namen (es ist ein MVP-Framework).
Einfache Winforms MVP Video
Winforms - MVP
Ein Beispiel für den Umgang mit der Dropdown-Liste
MVP - DropDownList
Einfaches Beispiel für eine Baumansichtsbindung (Bindung eines armen Mannes). Sie können in BindTree () eine beliebige Baumansicht-spezifische Logik hinzufügen.
Unten ist das Code-Snippet ... nicht getestet, direkt aus Gedanken eingegeben ...
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);
}
}