Существует (как минимум) два варианта MVP.
- Шаблон пассивного просмотра
- Шаблон контролера
Пассивное представление, как следует из его названия, рассматривает пользовательский интерфейс как более или менее пассивный интерфейс между пользователем и приложением. Он передает как можно больше тестируемого кода докладчику, оставляя представление для обработки только самых основных обновлений пользовательского интерфейса.
Контролирующий контроллер дает представлению немного больше ответственности, позволяя ему управлять синхронизацией данных. Обычно это делается с помощью привязки данных.
В любом случае обработка события выполняется путем делегирования методу презентатора:
EventHandler()
{
presenter.HandleEvent();
}
Если обработка события требует внесения изменений в форму, вы предоставляете то, что необходимо обновить как свойство:
public string PropertyThatNeedsToBeUpdated
{
get
{
return Control.Property;
}
set
{
Control.Property = value;
}
}
Для пассивного просмотра сетки являются препятствием. Их сложность затрудняет захват всех возможных событий. Контроллер Supervising упрощает сетку, поскольку вы оставляете синхронизацию данных до элементов управления с привязкой к данным.
Вы должны сделать суждение о том, что больше подходит для вашей ситуации.