WPF - UI 未从命令更新

2024-04-04

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

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

如果我只是将 IsBusyIndi​​cator 设置为 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(使用前将#替换为@)

WPF - UI 未从命令更新 的相关文章

随机推荐