0

每当我的 UI 加载某些内容时,我想显示一个进度圈。

我尝试在 shellView 中使用布尔值并将其设置为 true 或 false。

IsBusy=true;

但是当我将 Caliburn Micro 用于 MVVM 时,视图没有显示进度圈,因为 UI 在后台工作时冻结。我尝试使用后台工作人员,但没有工作。

当我的视图很忙时,我想显示一个进度指示器。可能正在加载 ComboBox 或执行一些后台任务。

4

1 回答 1

4

如果您正在执行后台任务(例如从 Web 服务检索数据),您可以使用BackgroundWorkerTask.Factory.StartNew()在 .Net 4.0 中在单独的线程中执行该操作(而不是在所谓的“UI 线程”中执行)。这将允许您的视图在执行后台操作时保持响应。

现在,在加载视图本身的情况下,您无法在单独的线程中执行此操作,因此无法阻止 UI 在完全加载之前冻结一会儿。

因此,一个选项是在单独的线程中创建一个“覆盖窗口”(因此有自己的调度程序),这将是一个透明窗口,位于当前加载的窗口的“上方”(按 Z 顺序)。覆盖窗口保持响应,因为它有自己的调度程序,因此您可以显示加载指示器或动画,并在加载完成时将其删除。

是我的意思的一个例子。

于 2012-11-18T21:06:18.847 回答