首先,我们使用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属性内容之前找到触发的事件。你知道吗?
或者你知道如何绕过这个问题吗?线索?或者可以帮助的东西...... 谢谢!