Модель - Просмотр - Ведущий с виртуальной сеткой - PullRequest
1 голос
/ 11 октября 2008

Какова наилучшая разбивка ответственности при использовании виртуальной сетки и шаблона MVP в приложении winforms.

включая:

  1. Получение обратных вызовов из сетки при обновлении пользователем измененных ячеек
  2. Обратный вызов из сетки для установки стиля и значения ячейки с учетом строки и столбца

Ответы [ 2 ]

1 голос
/ 12 октября 2008

Точные обязанности во многих шаблонах, которые называются Model-View-Presenter, различаются. Главным образом они варьируются в зависимости от того, насколько контроль ведущий осуществляет над представлением. Мартин Фаулер подробно обсудил ряд различных вариантов в своей главе Архитектура графического интерфейса , которую стоит прочитать.

Взгляните на Presenter First , поскольку в нем подробно рассматриваются адаптеры и обязанности.

Обе Пассивное представление и Контролирующий контроллер стоит посмотреть.

модель (или модель предметной области) == логическое представление сущностей, участвующих в системе, включая их состояние и поведение

Presenter == прослушивать события из вида (и, возможно, модель) и обслуживать эти запросы, конвертировать типы модели в типы представления (пассивное представление), это действительно важно, чтобы скрыть представление и модель друг от друга. Реагирует на раздражение от пользователя.

view == presentation: визуальное представление модели, с которой пользователь может взаимодействовать, собирая пользовательский ввод

Ваши конкретные вопросы относительно обратных вызовов и получения стиля ячейки сетки будут включать в себя представление, обрабатывающее события из сетки и вызывающее события обратно в презентатор, чтобы запросить действия или получить данные из модели. Это идеально подходит для обратного вызова при обновлении содержимого ячейки (его необходимо опубликовать для докладчика, чтобы докладчик мог подтвердить изменение в модели и внести изменения в модель).
Что касается стиля ячейки сетки, я думаю, что какой-то адаптер в представлении может нуждаться в преобразовании состояния из модели (полученной посредством события из представления в презентатор) в информацию о стиле ячейки сетки. Это может произойти в докладчике, но я бы лично предпочел, чтобы докладчик не знал виджет в представлении.

0 голосов
/ 12 октября 2008

Если я правильно вас понимаю, сетка является частью реализации представления и не видна докладчику. В этом случае докладчику не нужно знать, как отображаются данные, только как их предоставить.

Я бы, вероятно, создал вспомогательный класс, какой-то адаптер, с которым грид связывается. Сетка не видит ничего, кроме этого помощника, то же самое для вида.

Сотрудничество будет примерно таким:

сетка <- помощник <- просмотр <-> докладчик

...