WPF:绑定 - 对象未更新

时间:2009-03-26 11:27:24

标签: wpf data-binding

我有一个对象,它被设置为Window中的DataContext。我在窗口中有文本框,它们绑定到对象的属性。然而,在对象的属性更新之前似乎存在延迟。

<TextBox x:Name="txtPropertyOne" Text="{Binding Path=PropertyOne,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"  />

如果我更改了几个文本框中的值,然后快速尝试访问它们映射到的属性,有时会有更改未反映在对象的属性中。我认为这就是PropertyChanged UpdateSourceTrigger应该照顾的内容。

3 个答案:

答案 0 :(得分:1)

  

如果我改变了几个值   文本框然后快速尝试访问   他们映射的属性

我可以用两种方式解释这句话:

  1. 您正在尝试访问后台线程上的值。在这种情况下,您可能在UI线程有机会执行其操作之前访问属性。
  2. 您在UI线程上使用单独的消息来检查值。绑定的优先级低于SendNormal。因此,如果您的邮件优先级为SendNormal,则会在任何待处理的绑定更新之前对其进行处理。
  3. 如果这不能解答您的问题,请通过“快速尝试访问这些属性”来澄清您的意思。

答案 1 :(得分:0)

WPF数据绑定的基本规则很简单:

  • 目标属性必须是a 依赖属性,你就是 已经正确,它绑定到文本 TextBox的属性。
  • source属性可以是CLR 对象(除了任何派生的WPF之外) DependencyObject),但是对象 必须雇用或实施自己的 INotifyPropertyChanged的。

您是否已在对象上实现了INotifyPropertyChanged?

答案 2 :(得分:-2)

你的对象是DependencyObject吗?您要绑定到DependencyProperty的属性吗?如果是,则不需要指定触发器。如果他们不是,我建议他们这样做。它是创建可靠绑定对象的最简单方法。

我认为延迟与您使用UpdateSourceTrigger有关。我不认为它做你认为它做的,这就是为什么它不像你期望的那样。

删除UST,如果不起作用,则将绑定对象重构为DO,将PropertyOne重构为DP。相信我,一旦你完成了学习DependencyObjects的痛苦,它就值得了。