WPF - UI 未从命令更新

Ben*_*Jey 6 .net c# data-binding wpf mvvm

我在执行命令时遇到用户界面未更新的问题。

我有一个不确定的 ProgressBar,它的可见性绑定到 ViewModel 中的 IsBusyIndi​​cator 属性。命令现在应该执行一个方法并在计算时显示进度条,如下面的代码片段所示。但是,这并不像我预期的那样工作。该属性已设置为正确的值,但 UI 未更新以显示 ProgressBar。

如果我只是将 IsBusyIndi​​cator 设置为 true 并且在命令中不执行任何其他操作,则效果很好,因此 INotifyPropertyChanged 和 Binding 可以正常工作。

void CommandExecute()
{
    IsBusyIndicator = true;
    // Do stuff that takes long
    IsBusyIndicator = false;
}
Run Code Online (Sandbox Code Playgroud)

在我看来,UI 会等待命令完成后再更新视图。有没有办法强制 UI 立即更新?

预先感谢,愿原力与你同在。

hai*_*imb 2

正如其他人在这里所说的,它不起作用,因为您可能正在 UI 线程上完成工作。

以下是技术内容:当引发 INotifyPropertyChanged 的​​ PropertyChanged 时,绑定将通过在调度程序中调用处理程序来调度处理程序BeginInvoke,而不是立即调用它。

由于 UI 线程仍在运行长时间操作,因此处理属性更改仍会在调度程序队列中等待。这就是为什么仅当命令完成时才会发生更改的原因。