Мой подход к программированию Winforms олдскульный

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

Все приложение представляет собой C # .NET Winforms.

Подробно у нас есть следующий процесс:

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

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

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

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

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

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

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

7
задан Mike Q 23 February 2011 в 22:25
поделиться