C# 在LostFocus上更新数据绑定失败,因为之前更改了源

C# 在LostFocus上更新数据绑定失败,因为之前更改了源,c#,wpf,binding,lost-focus,updatesourcetrigger,C#,Wpf,Binding,Lost Focus,Updatesourcetrigger,首先,我们使用mvvmlight作为参考 我有一个包含对象DataInded的gridview,可以通过一个全局文本框(在gridview之外)修改所选对象的一个属性 在开始时,使用以下代码通过每个按键的文本框绑定更新属性值: Text="{Binding Content, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" 但每次修改该值时,我们都会进行大量计算,这就是为什么我们选择太多,只使用代码更新LostFocus上的属性: Text=

首先,我们使用mvvmlight作为参考

我有一个包含对象DataInded的gridview,可以通过一个全局文本框(在gridview之外)修改所选对象的一个属性

在开始时,使用以下代码通过每个按键的文本框绑定更新属性值:

Text="{Binding Content, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
但每次修改该值时,我们都会进行大量计算,这就是为什么我们选择太多,只使用代码更新LostFocus上的属性:

Text="{Binding Content, Mode=TwoWay, UpdateSourceTrigger=LostFocus}"
现在我有一个问题:(

当焦点转到应用程序的另一个控件(gridview的一行除外)时,它会工作。该属性会使用textbox的值进行很好的更新

但是如果焦点转到gridview的另一行,它就不起作用了。事实上,当选择新行时,我们的DataInded属性“content”的内容将用新选择的行的值进行更新,然后在事件LostFocus发生时,数据绑定尝试更新该值

因此,LostFocus发生在行更改之后,属性“Content”已经包含新行的内容,这就是为什么之前所选行的属性“Content”的更新不起任何作用

我尝试使用以下代码进行数据绑定:

Text="{Binding Content, Mode=TwoWay, UpdateSourceTrigger=Explicit}"
但未能找到在“SelectionChange”更新de属性内容的位置之前激发的事件。您知道一个吗

或者你知道如何绕过这个问题吗?一个线索?或者一些可以帮助。。。
谢谢!

您是否尝试过侦听textbox的“LostFocus”事件并使用UpdateSourceTrigger=Explicit。在LostFocus事件处理程序中,您可以执行“var exp=this.textBox1.GetBindingExpression(textbox.TextProperty);exp.UpdateSource();”我试过了。这是我在邮件中说的。但它没有解决我的问题,因为在gridview上的“SelectionChange”之后触发了LostFocus事件:(