WPF - 在属性更改期间更改DataContext会导致错误绑定

时间:2013-06-19 12:04:35

标签: wpf binding datacontext

我有一个绑定在计数器上的textBox,它快速递增(每10毫秒)。

<TextBox  Text="{Binding CounterInc.Counter}"/> 

CounterInc是一个增加线程中Counter属性的类。

当我影响另一个对象时,CounterInc属性:
(为了确保两个计数器之间存在差异,第一个计数器在1到100之间是圆形的,第二个计数器在1000到1100之间是圆形的)

private void Button_Click(object sender, RoutedEventArgs e)
    {
        if (flag)
            CounterInc = FirstCounterInc;
        else
            CounterInc = SecondCounterInc;

        flag = !flag;
    }  

TexBox继续显示旧计数器的值 如果我在重新生效CounterInc属性之前停止计数器递增,我没有问题,textBox显示新的计数器值。
如果currentValue绑定正在改变,似乎绑定无法附加到正确的属性propertyChanged事件 请注意,如果计数器增量较慢(500毫秒),则行为同样正确 你有没有见过这个问题,以及这个问题的确切原因 非常感谢您的帮助

1 个答案:

答案 0 :(得分:0)

WPF中所有绑定的默认绑定是OneTime。将绑定更改为OneWay

Binding CounterInc.Counter, Mode=OneWay

确保为CounterInc.Counter属性正确调用NotifyPropertyChanged。