У меня есть типичная проблема с ловлей 22. У меня есть элемент управления .NET WinForm, который содержит текстовое поле и флажок. Оба элемента управления являются данными, привязанными к свойствам в экземпляре класса данных. Текстовое поле для цены, флажок, чтобы указать, что цена является переопределением цены. Также в классе данных есть свойство, которое содержит первоначальную цену товара.
Я бы хотел, чтобы элементы управления соблюдали следующие правила:
- Когда пользователь вводит значение в текстовое поле цены, флажок автоматически устанавливается, чтобы указать, что он переопределяет значение цены
- Если флажок снят, цена товара восстанавливается до первоначальной цены.
Когда пользователь снимает флажок, обработчик событий проверяет проверенное состояние и устанавливает для свойства цены товара исходное значение цены. Однако, когда значение цены привязано к базе данных, инициируется событие связывания, которое обновляет значение текстового поля, которое запускает обработчик события измененного текста, который повторно проверяет флажок.
Я пытался отследить условия, в которых я явно обновляю что-то, что вызовет событие изменения управления. Это работает только для части этого, хотя. Событие изменения текстового поля запускается в другие моменты, которые находятся вне моего контроля, например, когда привязка данных запускается при первоначальном отображении формы.
Я искал вокруг, и я думаю, что я просто не придумываю правильные условия поиска, чтобы найти то, что я ищу. Кажется, что привязка данных прекрасна и изящна до тех пор, пока вам не понадобится что-то практичное, например, взаимодействие двух связанных элементов управления друг с другом. Кажется, просто нет способа отличить то, что вызвало управляющие события.
Я также посмотрел на события, доступные в компоненте источника привязки, но там, похоже, нет ничего более полезного. Я могу обработать событие, которое возникает после завершения привязки, но это происходит после возникновения проблем.
У кого-нибудь есть предложения?