Мой сценарий: при открытии приложения я читаю много данных из файла (используя XMLSerializer
) и помещаю их в ObservableCollection<MyClass>
.Используя привязки, я представляю данные пользователям.Когда они изменяют данные в поле, соответствующие данные в коллекции обновляются, но я не хочу, чтобы эти данные были сохранены в файл при LostFocus
.У меня есть кнопка «Сохранить».
Я не хочу использовать UpdateSOurceTrigger = PropertyChanged
, я хочу сохранить LostFocus
.Проблема в том, что когда пользователь вводит данные в TextBox
и нажимает кнопку Сохранить, TextBox
не теряет фокус, то есть данные не передаются в коллекцию и не сохраняются.Ниже мое решение, которое работает, но мой вопрос таков: это правильный способ или есть другой, лучший способ?
Код, который я добавил к кнопке Сохранить, перед сохранением коллекции:
IInputElement focusedElement = Keyboard.FocusedElement;
if (focusedElement is TextBox)
{
BindingExpression myBinding = BindingOperations.GetBindingExpression((TextBox)focusedElement, TextBox.TextProperty);
myBinding.UpdateSource();
}