WPF闪屏UI不更新

我的WPF应用程序中有一个闪屏。闪屏是在我的 App 类作为一个字段,并在 Startup 事件,我执行各种初始化功能,可能需要一些时间,显示提示窗口等。我的启动事件看起来是这样的。

Startup += (_,__) =>
{
    mySplashScreen.UpdateMessage("Initializing Component A...");

    InitializeComponentA();

    mySplashScreen.UpdateMessage("Initializing Component B...");

    InitializeComponentB();

    mySplashScreen.UpdateMessage("Initializing Component C...");

    InitializeComponentC();

    mySplashScreen.UpdateMessage("Opening application...");
};

对于闪屏更新方法,我尝试了以下方法:

  • 使用一个ViewModel类,实现 INotifyPropertyChanged绑定到它,并更新视图模型的 Message 属性。
  • 创建一个 DependencyProperty 叫做 Message 的代码中,并对其进行绑定。
  • 直接设置属性(例如 myTextBlock.Text = splashMessage;)
  • 将闪屏放在一个单独的线程中,并通过设置闪屏信息。Dispatcher.Invoke() (使用 DispatcherPriority.Send 以确保用户界面立即更新)。)

我的问题是,所有的闪屏信息都没有在窗口上更新显示。我的问题是,所有的闪屏信息都没有在窗口上显示更新。只是 溅射界面更新的条件是当其中一个 InitializeComponentX() 方法显示一个对话框。在这种情况下,飞溅的UI就会更新。对于上面所有的选项,我甚至尝试了同步和异步等待(通过 Thread.Sleep())几秒钟,看看用户界面是否会更新,但它从来没有更新。

为什么我的闪屏界面只有在我显示另一个对话框时才会更新?

解决方案:

为什么我的spash UI只有在我显示另一个对话窗口时才会更新?

你完全阻塞了UI线程,这使得WPF无法处理和显示你的更新。

您需要将您的工作移到后台线程中。

给TA打赏
共{{data.count}}人
人已打赏
解决方案

如何获取div中特定元素点击时的值?

2022-4-20 16:09:09

解决方案

打印文件中从匹配行到文件末尾的行数

2022-4-20 17:08:53

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索