Binding OnPropertyChanged仅适用于最终更改

Binding OnPropertyChanged仅适用于最终更改,binding,mvvm,Binding,Mvvm,我有一个MVVM应用程序,其中有一个绑定到变量Var1的文本块: private string _Var1; public string Var1 { get { return _Var1; } set { _Var1 = value; OnPropertyChanged("Var1"); } } 在我的ViewModel中: Var1 = "7"; OnPropertyChanged("Var1"); Thread.Sleep(1000); Var1 = "0"; OnP

我有一个MVVM应用程序,其中有一个绑定到变量Var1的文本块:

private string _Var1;
public string Var1
{
    get { return _Var1; }
    set { _Var1 = value; OnPropertyChanged("Var1"); }
}
在我的ViewModel中:

Var1 = "7";
OnPropertyChanged("Var1");

Thread.Sleep(1000);

Var1 = "0";
OnPropertyChanged("Var1");
我认为:

<TextBlock name="Textblock1" Text="{Binding Var1}"  />


当我运行程序时,我只看到第二个变化,我将值设置为“0”。我可以看出程序暂停了1秒,但为什么第一个值在1秒内没有显示?

我猜线程睡眠不允许UI接收更改,您可以在睡眠后立即设置新值。尝试在第二个属性更改调用之前插入睡眠,但在设置新值并查看我是否正确后插入睡眠。:)我只是放弃了,使用了后台工作程序来更改最终值。我认为UI会等待控件传回,然后更新字段。使用后台工作人员是一种黑客行为,但它是有效的。