Реализация MVC в Winforms - PullRequest
       7

Реализация MVC в Winforms

0 голосов
/ 16 декабря 2009

Я пытаюсь понять, как реализовать MVC в winforms, поэтому я собрал следующее:

  1. Основная форма, которая разделена на 2 панели (слева / справа), на левой панели отобразится список клиентов.
  2. Форма сведений о заказе, в которой будут перечислены все заказы, размещенные для выбранного клиента, в главной форме. Эта форма сведений о заказе будет отображаться на правой панели главной формы.

Теперь я определил интерфейс представления для каждого и докладчика. Как докладчик по деталям заказа должен захватить выбранного клиента в другом представлении?

Ответы [ 3 ]

1 голос
/ 27 ноября 2018

Я согласен с pm100 в том, что должен быть механизм публикации / подписки.

Чтобы соблюдать принцип «разделения интересов», форма (или представление, если хотите) должна определять ряд событий, к которым может подключиться ваш контроллер (или докладчик в MVP).

Если в левой панели вы измените выбор, это вызовет событие 'LeftPane_SelectionChanged', к которому контроллер подключен и на который воздействует, в этом случае получая сведения о выбранном элементе (которые можно передать как аргументы события) сопоставляя заказы выбранного клиента в объекте «модель» и получив его, модель можно затем «отправить» обратно в представление (форму), вызвав подпрограмму «rightPanel_load» и передав эту модель.

Форма / представление должны оставаться как можно более легкими и тупыми, чтобы вся бизнес-логика определялась в других теперь не связанных между собой слоях промежуточного программного обеспечения и действовала исключительно для событий.

На мобильном телефоне в минуту, поэтому публиковать примеры непросто, но со временем обновится.

Хорошо прочитайте архитектуру MVC, а также принципы объектно-ориентированного проектирования (SOLID - хорошая отправная точка), это должно привести вас к правильному мышлению и, как только вы его получите, у вас будет эта лампочка. момент, туман рассеивается, и вдруг вы полетите!

0 голосов
/ 17 декабря 2009

а) определить событие - скажем, выделение. Если должен быть высокий уровень и выражен в терминах данных модели

b) каждое представление с выбором (например, на левой панели) представляет это событие

c) любой вид, который хочет подписаться (например, на вашей правой панели), присоединяется к событию, выставленному (b)

Вы должны прочитать об определении и использовании событий (большинство хороших книг по c # будет иметь это)

Когда это становится интересным, то имеет какую-то форму брокерской системы, чтобы потребители могли найти издателей событий, это устраняет необходимость (c) знать имя (b)

Для вашей простой двухпанельной системы то, что я описал, может быть излишним, но это будет интересно реализовать и добавит более долгосрочную гибкость

0 голосов
/ 16 декабря 2009

Вам нужен механизм публикации и подписки.

Каждый просмотр может объявлять об изменениях своего состояния (например, событие changechange).

Заинтересованные компоненты могут подписаться на эти события.

Это разъединяет два представления - это означает, что у вас могут быть дополнительные панели, которые показывают веб-страницу клиента, график истории заказов, фотографию продавца ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...