Проект, над которым я работаю, довольно большой, и у нас есть структура, которую мы разработали для простого создания простых экранов пользовательского интерфейса.У нас есть два основных типа: Поиск (параметры поиска + таблица результатов) и Детализация (набор редакторов, которые обычно заполняются из какого-либо объекта модели).
Все приложение - C # .NET Winforms.
В Detail у нас есть следующий процесс.
- Load - Заполняет элементы редактирования, основываясь на соответствующем объекте модели.Вызывается непосредственно перед отображением сведений
Пользователь нажимает кнопку ОК
- Подтвердить - проверяет сведения, чтобы убедиться, что все соответствует
- Принять - скопировать обновленноеуправляющие значения обратно в модель
Все это прекрасно работает для простых вещей, но в более сложных случаях я заметил, что, возможно, вышеупомянутый подход не самый плавный.
Более сложные случаиупомянуто выше, когда деталь представляет объект модели, и в деталь встроена сетка, которая содержит «дочерние» объекты, которые можно добавлять и удалять.Обычно вы хотите запустить дочернюю деталь и передать объект родительской модели, однако на данный момент он не полностью заполнен / не обновлен, поскольку это происходит только при нажатии кнопки ОК.Иногда я работаю над этим раздражающим образом, что приводит меня к следующему вопросу.
На высоком уровне - это принятый / лучший подход для экранов сведений, который я описываю для копирования значений в модельобъект, когда элемент управления изменяется, а не ждать, пока не будет нажата кнопка OK?
Если это так, в приложении Winforms, каков наилучший способ добиться этого?Я нашел несколько статей, в которых упоминается Control.DataBindings
, но он не идеален из-за отсутствия безопасности компиляции во время связывания.Я читал, что WPF имеет хорошую поддержку связывания, но, к сожалению, я не использую WPF.