2

我有一个文本框绑定在一个快速递增的计数器上(每 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 继续显示旧 Counter 的值。
如果我在重新影响 CounterInc 属性之前停止计数器递增,我没有问题,textBox 显示新的计数器值。
如果 currentValue 绑定正在更改,则绑定似乎无法附加到正确的属性 propertyChanged 事件。
请注意,如果计数器增量较慢(500 毫秒),则行为同样正确。
你有没有见过这个问题,以及这个问题的确切原因。
非常感谢你的帮助

4

1 回答 1

0

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

Binding CounterInc.Counter, Mode=OneWay

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

于 2013-06-19T14:08:13.657 回答