【问题标题】:Simple WPF App Splash Screen "Jumps" at startup启动时简单的 WPF 应用程序启动画面“跳跃”
【发布时间】:2020-09-20 06:40:33
【问题描述】:

我的 WPF 应用程序在启动时使用标准 MS recommended method 将 PNG 图像显示为初始屏幕。也就是说,我选择了一个现有的图像文件并将其构建操作设置为“启动画面”,我喜欢这个,因为它很简单。无需编写代码,只是一个属性。

但它有一个问题:它“跳跃”。

当我的应用程序启动并且初始屏幕首次出现时,它会很大并且在我想要的屏幕上居中。但随后,它几乎立即向左跳并变小。好像它的窗口从最大化变成只占据屏幕的一部分。

这种“跳跃”甚至在我的应用程序对象的构造函数到达之前就发生了,所以肯定早在我的 MainWindow 混合之前。我当然不会调整任何东西的大小。

那么可能是什么原因造成的呢?我什至看不到我可以在任何地方设置断点来检测这一点。我可以在某处设置一些属性来防止这种情况发生吗?就像在我的 App.xaml 中一样?

我应该说这是一个使用 .NET core 3.1 的 Prism 7.2 应用程序,如果有任何问题的话

【问题讨论】:

    标签: wpf prism splash-screen


    【解决方案1】:

    如果你覆盖:

    protected virtual void OnStartup (System.Windows.StartupEventArgs e);
    

    你可能已经做了什么。然后您可以通过以下方式控制启动画面:

    SplashScreen splashScreen = new SplashScreen(YourImageFileName);
    splashScreen.Show(false, true); // Auto-close: NO, On top: YES
    

    然后当你的主窗口准备好显示时,然后:

    splashScreen.Close(FadeTimeout); // FadeTimeout is of type TimeSpan
    

    我知道你喜欢这种方式,在启动画面上你的代码中没有任何内容,但是这个额外的代码可以让你更多地控制启动画面。这可能就是你所需要的

    【讨论】:

    • 感谢您的回复。如果必须的话,我确实打算试试这个。我承认我有点担心 SplashScreen 类似乎没有任何方法来确保它被最大化。但是当我来到它时,我会越过那座桥。不过,如果有人知道为什么会发生这种情况,以及如果没有这个代码步骤我如何解决它,我想听听
    • 如果你应用你的代码,那么就可以弄清楚发生了什么。我试图制作一个非常简单的测试应用程序,只有一个窗口和启动画面,没有任何启动画面代码。当主窗口显示时,闪屏显示为最大化并消失。所以我认为你的问题在于你的应用程序和主窗口的初始化
    • 通常我会同意你的观点,但我的启动画面甚至在我的应用程序对象到达它的构造函数之前就会跳转 - 并且在我的主窗口构建之前很久。所以我不认为其中任何一个都是罪魁祸首
    猜你喜欢
    • 2018-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-20
    相关资源
    最近更新 更多