Удобно иметь кнопку «Принять» (в WPF: IsDefault = «True») в форме.
В мире Windows Forms я использовал для чтения данных из пользовательского интерфейса объект(ы) в соответствующем событии Click кнопки.
Но с WPF следует использовать привязку данных. В конструкторе окна я установил this.DataContext = test;
И тут возникает проблема: пользователь ввел какой-то текст в TextBox2 и нажал клавишу Enter. Теперь команда, привязанная к кнопке ОК, выполняется, данные сохраняются.
Но это не правильные данные! Почему? TextBox2 еще не потерял фокус, и, следовательно, ViewModel еще не обновился. Изменение UpdateSourceTrigger на PropertyChanged не всегда уместно (например, отформатированные числа), я ищу общее решение.
Как вы преодолеваете такую проблему?
TextBox2.GetBindingExpression(TextProperty).UpdateSource();
в обработчике событий закрытия. - person LPL   schedule 07.07.2012