【问题标题】:Show Progress Circle when data is loaded in View in WPF在 WPF 中的视图中加载数据时显示进度圈
【发布时间】:2012-11-18 20:54:19
【问题描述】:

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

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

IsBusy=true;

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

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

【问题讨论】:

    标签: c# .net wpf caliburn.micro


    【解决方案1】:

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

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

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

    Here 是我的意思的一个例子。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-26
      • 2014-05-03
      • 1970-01-01
      • 2012-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多