假设我有一个命令的执行方法,如下所示:
private void Execute()
{
// Bound to a wait indicator in the UI
Searching = true;
// Do some long running process
Thread.Sleep(2000);
Searching = false;
}
当 Searching 设置为 True 时,它所绑定的 UI 元素将不会更新(即使 Searching 发送 OnPropertyChanged 调用)。
但是,一旦 Thread.Sleep 完成,UI 就会处理我的更改并显示 Searching 绑定到的等待指示器。
现在,我知道传统智慧是对长时间运行的进程(Thread.Sleep)的调用是异步的。
但是假设我没有使用异步库,有没有办法指示 WPF 现在对搜索执行绑定?
像这样的东西:
private void Execute()
{
// Bound to a wait indicator in the UI
Searching = true;
// MADE UP CODE
Binding.UpdateBindingNow("Searching");
// END MADE UP CODE
// Do some long running process
Thread.Sleep(2000);
Searching = false;
}
更新:我尝试过的:
- 使用 Dispatcher 尝试分别将命令发送到 UI。
- 我还尝试了具有高优先级的调度程序。