假设我有一个命令的执行方法,如下所示:
    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。
- 我还尝试了具有高优先级的调度程序。