我在执行命令时遇到用户界面未更新的问题。
我有一个不确定的 ProgressBar,它的可见性绑定到 ViewModel 中的 IsBusyIndicator 属性。命令现在应该执行一个方法并在计算时显示进度条,如下面的代码片段所示。但是,这并不像我预期的那样工作。该属性已设置为正确的值,但 UI 未更新以显示 ProgressBar。
如果我只是将 IsBusyIndicator 设置为 true 并且在命令中不执行任何其他操作,则效果很好,因此 INotifyPropertyChanged 和 Binding 可以正常工作。
void CommandExecute()
{
IsBusyIndicator = true;
// Do stuff that takes long
IsBusyIndicator = false;
}
在我看来,UI 会等待命令完成后再更新视图。有没有办法强制 UI 立即更新?
预先感谢,愿原力与你同在。
您可以尝试以下操作:
private async void CommandExecute()
{
IsBusyIndicator = true;
await Task.Run(() => DoWork());
IsBusyIndicator = false;
}
这使得DoWork()
在单独的线程上运行。一般来说,async void
应避免使用这些方法,但如果它们正在处理 UI 事件,则它们是可以的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)