XAML使用UpdateSourceTrigger = PropertyChanged将多个控件绑定到同一属性

时间:2018-09-23 21:16:24

标签: c# wpf vb.net xaml

我有一个文本框(文本属性)和一个列表框(选定项属性)绑定到相同的文本属性,两个绑定都将UpdateSource设置为PropertyChanged,以便一旦更改数据,另一个控件就会显示更改。在我更改代码中的属性值之前,一切都很好。

在代码中将属性更改为通常为空字符串时,其中一个控件会拾取更改,但似乎尝试将其当前状态应用回该属性,因此在调试属性时可以看到已设置值代码将其设置为“”,然后由于其中一个控件的绑定而将其设置回其先前的值。我尝试了各种方法来避免这种情况,但是都有副作用。

1 个答案:

答案 0 :(得分:0)

我最近的可行方法是使用两个控件上的Got和Lost焦点事件来更改绑定。当相关控件获得焦点时,我将绑定更改为UpdateSourceTrigger = PropertyChanged,而当控件失去焦点时,将其设置为LostFocus。我只能假设,因为只有一个UpdateUpdateTrigger = PropertyChanged控件,XAML / WPF对此感到满意!

LostFocus事件看起来像这样

Dim b As New Binding("Comment")
b.UpdateSourceTrigger = UpdateSourceTrigger.LostFocus
EditComment.SetBinding(TextBox.TextProperty, b)

GotFocus相同,但具有PropertyChanged而不是LostFocus。

目前,我认为这对我来说还可以。但是,如果有其他人遇到相同的问题或有更好的解决方案,我会发布它。