Решение, которое я использовал, заключается в том, чтобы вызвать ValidateChildren
в форме из события Save (вызова), прежде чем фактически сохранить записи базы данных. Это вызывает проверку всех полей и, таким образом, привязку происходит без потери фокуса элемента управления, редактируемого в данный момент в форме. Это очень удобно, если кнопка «Сохранить» находится в системе меню Windows, а не в самой форме - плюс она возвращает значение «Ложь», если данные в любом элементе управления в форме недействительны, и, следовательно, может использоваться для предотвращения сохранения ошибочных данных.
Это также позволяет избежать противоречивого обновления связанного поля, которое происходит, когда OnPropertyChanged
используется в качестве метода привязки вместо OnValidation
. Кроме того, очень важно, чтобы для метода привязки было задано значение Никогда, при этом отдельные вызовы WriteValue выполняются для каждого подтвержденного события, захваченного для каждого элемента управления.