0

首先,作为信息,我们使用 MVVM light。

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

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

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

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

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

现在我有一个问题:(

当焦点转到应用程序的另一个控件而不是 gridview 的一行时,它会起作用。该属性已使用文本框的值进行了很好的更新。

但是如果焦点转到gridview的另一行,它就不起作用了。In fact, when the new line is selected the content of our databinded property "Content" is updated with the value of the new selected line and it's AFTER that the databinding try to update the value when the event LostFocus occurs.

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

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

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

但未能找到在“SelectionChange”之前触发的事件以更新 de 属性内容。你认识一个吗?

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

4

0 回答 0