Я пробовал MVP, и он, кажется, отлично работает с окнами форм тоже. В этой книге приведен пример оконных форм с шаблоном MVP (пример приложения для расчета заработной платы). Приложение не так сложно, но даст вам представление о том, как его создать.
Agile Принципы, Шаблоны и Практики в C # ...
Вы можете получить исходный код в
Source Code
РЕДАКТИРОВАТЬ:
Существуют две разновидности схемы MVP (а) пассивный вид и (б) контролирующий контроллер
Для сложных сценариев привязки данных я предпочитаю использовать паттерн Supervising controller. При контроле структуры контроллера ответственность за привязку данных возлагается на представление. Таким образом, для дерева / таблицы данных это должно быть в соответствующих представлениях, только презентатор должен передавать только логику, не зависящую от вида.
Я рекомендую взглянуть на следующую структуру MVP
MVC # - Структура MVP
Не используйте имя (это фреймворк MVP).
Простые winforms видео MVP
Winforms - MVP
Пример работы с выпадающим списком
MVP - DropDownList
Простой пример привязки дерева (привязка бедняка). Вы можете добавить любую логику, специфичную для дерева, в BindTree ().
Ниже приведен фрагмент кода .... не проверено, непосредственно введено от мысли ....
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);
}
}