【问题标题】:How to display render status in a WPF form?如何在 WPF 表单中显示渲染状态?
【发布时间】:2017-03-18 19:39:46
【问题描述】:

我正在重写 WPF 的 OnRender 来绘制复杂的图形。这可能很少需要很长时间。我想向用户表明应用程序没有崩溃,但“只是”需要很长时间才能呈现。

我该怎么做?在 OnRender 调用期间似乎无法以任何方式修改 UI。

【问题讨论】:

  • 您最后的说法是正确的,您不能在修改 UI 的同时修改 UI。这两个操作将在同一个线程上,因此是顺序的,而不是异步的。

标签: wpf onrender


【解决方案1】:

您正在谈论在绘图顶部放置“忙碌指示器”。

只需在顶部放置一个半透明的网格,上面写着“正在加载...” 你就完成了。

将其可见性绑定到一些布尔值,您在进入复杂渲染时更新一次,完成后更新一次。

如果你想看运动,或者放一个带有渐变背景的旋转椭圆..

【讨论】:

    【解决方案2】:

    由于 OnRender 方法将在 UI 线程上执行,因此您无法执行任何其他操作,例如显示交互式 ProgressBar 或在代码执行期间响应用户输入。

    您可以做的是弹出一个在单独线程中启动的新窗口,并在您开始绘制复杂图形之前显示该窗口。

    有关此问题的更多信息,请参阅我在以下类似问题中的回答。

    Wait screen during rendering UIElement in WPF

    一旦OnRender 方法返回您,然后关闭临时“加载”窗口:

    Can I stop WPF from executing UI actions out of the order in my code

    【讨论】:

      猜你喜欢
      • 2017-06-06
      • 1970-01-01
      • 2018-11-29
      • 2019-11-25
      • 1970-01-01
      • 2022-01-25
      • 1970-01-01
      • 1970-01-01
      • 2018-11-04
      相关资源
      最近更新 更多