Является ли мой подход к Winforms кодирования старой школы - PullRequest
7 голосов
/ 24 февраля 2011

Проект, над которым я работаю, довольно большой, и у нас есть структура, которую мы разработали для простого создания простых экранов пользовательского интерфейса.У нас есть два основных типа: Поиск (параметры поиска + таблица результатов) и Детализация (набор редакторов, которые обычно заполняются из какого-либо объекта модели).

Все приложение - C # .NET Winforms.

В Detail у нас есть следующий процесс.

  • Load - Заполняет элементы редактирования, основываясь на соответствующем объекте модели.Вызывается непосредственно перед отображением сведений

Пользователь нажимает кнопку ОК

  • Подтвердить - проверяет сведения, чтобы убедиться, что все соответствует
  • Принять - скопировать обновленноеуправляющие значения обратно в модель

Все это прекрасно работает для простых вещей, но в более сложных случаях я заметил, что, возможно, вышеупомянутый подход не самый плавный.

Более сложные случаиупомянуто выше, когда деталь представляет объект модели, и в деталь встроена сетка, которая содержит «дочерние» объекты, которые можно добавлять и удалять.Обычно вы хотите запустить дочернюю деталь и передать объект родительской модели, однако на данный момент он не полностью заполнен / не обновлен, поскольку это происходит только при нажатии кнопки ОК.Иногда я работаю над этим раздражающим образом, что приводит меня к следующему вопросу.

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

Если это так, в приложении Winforms, каков наилучший способ добиться этого?Я нашел несколько статей, в которых упоминается Control.DataBindings, но он не идеален из-за отсутствия безопасности компиляции во время связывания.Я читал, что WPF имеет хорошую поддержку связывания, но, к сожалению, я не использую WPF.

Ответы [ 2 ]

3 голосов
/ 24 февраля 2011

Для Winforms я бы посоветовал вам взглянуть на шаблон Model-View-Presenter. http://msdn.microsoft.com/en-us/magazine/cc188690.aspx

0 голосов
/ 24 февраля 2011

Это может помочь:

Пошаговое руководство. Создание основной / подробной формы с использованием двух элементов управления Windows Forms DataGridView

http://msdn.microsoft.com/en-us/library/y8c0cxey.aspx

...