WPF 加载面板和 UI 冻结
WPF loading panel and UI freeze
我有一个主窗口,每当我在任务中做一些工作时,它都会显示一个包含加载 gif 的 'Please wait' 面板。在编译数据时 gif 播放正常,但是当正在执行刷新 UI 控件的 INPC 逻辑时(因此在主 UI 线程上),应用程序冻结了一瞬间,我的gif播放不流畅了
例如,我遵循 MVVM 模式,我的视图中有一个数据网格绑定到 ObservableCollection MyBindedCollection。在我在任务中运行的视图模型的构造函数中,我创建了一个 tmp 可观察集合,当该过程完成时,我将变量 MyBindedCollection 设置为 tmp(因此不会将我的项目逐一添加到其中)。 INPC 逻辑当然在我的 属性 MyBindedCollection 的 setter 中。
有什么办法可以防止这种情况发生吗?任何想法将不胜感激。
@ZoolWay 是的,恐怕没有办法解决。我将淡出我的等待面板,thread.Wait 有足够的时间让动画在显示我的内容之前完成。因此它会显得光滑。感谢您的宝贵时间。
我有一个主窗口,每当我在任务中做一些工作时,它都会显示一个包含加载 gif 的 'Please wait' 面板。在编译数据时 gif 播放正常,但是当正在执行刷新 UI 控件的 INPC 逻辑时(因此在主 UI 线程上),应用程序冻结了一瞬间,我的gif播放不流畅了
例如,我遵循 MVVM 模式,我的视图中有一个数据网格绑定到 ObservableCollection MyBindedCollection。在我在任务中运行的视图模型的构造函数中,我创建了一个 tmp 可观察集合,当该过程完成时,我将变量 MyBindedCollection 设置为 tmp(因此不会将我的项目逐一添加到其中)。 INPC 逻辑当然在我的 属性 MyBindedCollection 的 setter 中。
有什么办法可以防止这种情况发生吗?任何想法将不胜感激。
@ZoolWay 是的,恐怕没有办法解决。我将淡出我的等待面板,thread.Wait 有足够的时间让动画在显示我的内容之前完成。因此它会显得光滑。感谢您的宝贵时间。