我正在覆盖WPF的OnRender来绘制复杂的图形。这可能很少需要很长时间。我想向用户指出该应用程序没有崩溃,但"仅"需要很长时间才能渲染。
我该怎么做?在 OnRender 调用期间,似乎无法以任何方式修改 UI。
您正在谈论在绘图顶部放置"繁忙指示器"。
只需在上面放置一个半透明的网格,上面写着"正在加载..."大功告成。
将其可见性绑定到某个布尔值,在进入复杂渲染时更新一次,完成后更新一次。
或者放一个带有渐变背景的旋转椭圆,如果你想看到运动。
由于 OnRender
方法将在 UI 线程上执行,因此您无法执行任何其他操作,例如在代码执行期间显示交互式ProgressBar
或响应用户输入。
您可以做的是弹出一个新窗口,该窗口在单独的线程中启动,并在开始绘制复杂图形之前显示此窗口。
有关此内容的更多信息,请参阅我在以下类似问题中的回答。
在 WPF 中呈现 UI 期间的等待屏幕
返回OnRender
方法后,关闭临时"加载"窗口:
是否可以阻止 WPF 在代码中不按顺序执行 UI 操作