Я пробовал MVP, и он, кажется, отлично работает с окнами форм.
В этой книге приведен пример оконных форм с шаблоном MVP (пример приложения для расчета заработной платы). Приложение не так сложно, но даст вам представление о том, как его создать.
Agile Принципы, шаблоны и практики в C # ...
Вы можете получить исходный код на
Исходный код
EDIT:
Существует два варианта паттерна 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);
}
}