【发布时间】:2026-01-21 12:30:01
【问题描述】:
我的场景是,在打开应用程序时,我从文件中读取大量数据(使用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();
}
【问题讨论】:
标签: c# wpf binding updatesourcetrigger