Ben*_*Jey 6 .net c# data-binding wpf mvvm
我在执行命令时遇到用户界面未更新的问题。
我有一个不确定的 ProgressBar,它的可见性绑定到 ViewModel 中的 IsBusyIndicator 属性。命令现在应该执行一个方法并在计算时显示进度条,如下面的代码片段所示。但是,这并不像我预期的那样工作。该属性已设置为正确的值,但 UI 未更新以显示 ProgressBar。
如果我只是将 IsBusyIndicator 设置为 true 并且在命令中不执行任何其他操作,则效果很好,因此 INotifyPropertyChanged 和 Binding 可以正常工作。
void CommandExecute()
{
IsBusyIndicator = true;
// Do stuff that takes long
IsBusyIndicator = false;
}
Run Code Online (Sandbox Code Playgroud)
在我看来,UI 会等待命令完成后再更新视图。有没有办法强制 UI 立即更新?
预先感谢,愿原力与你同在。
正如其他人在这里所说的,它不起作用,因为您可能正在 UI 线程上完成工作。
以下是技术内容:当引发 INotifyPropertyChanged 的 PropertyChanged 时,绑定将通过在调度程序中调用处理程序来调度处理程序BeginInvoke,而不是立即调用它。
由于 UI 线程仍在运行长时间操作,因此处理属性更改仍会在调度程序队列中等待。这就是为什么仅当命令完成时才会发生更改的原因。
| 归档时间: |
|
| 查看次数: |
2018 次 |
| 最近记录: |