由于之前更改了源,因此更新LostFocus上的数据绑定失败

时间:2012-02-22 17:04:53

标签: c# wpf binding lost-focus updatesourcetrigger

首先,我们使用MVVM灯来获取信息。

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

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

Text="{Binding Content, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"

但是每次修改值时我们都会进行大量的计算,这就是我们选择的原因,只在LostFocus上使用代码更新属性:

Text="{Binding Content, Mode=TwoWay, UpdateSourceTrigger=LostFocus}"

现在我有一个问题:(

当焦点转到应用程序的另一个控件而不是gridview的一行时,它可以工作。该属性已更新为文本框的值。

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

因此,LostFocus发生在线已经改变之后,属性“Content”已经包含新行的内容,这就是为什么更新以前选择的行的属性“Content”什么都不做。

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

Text="{Binding Content, Mode=TwoWay, UpdateSourceTrigger=Explicit}"

但未能在“SelectionChange”更新de属性内容之前找到触发的事件。你知道吗?

或者你知道如何绕过这个问题吗?线索?或者可以帮助的东西...... 谢谢!

0 个答案:

没有答案