WPF启动屏幕,如何使启动屏幕显示更长时间

3
我发现只有一种方法可以让启动画面显示更长时间。那就是将ApplicationDefinition改为Page,并配置其时间。
但我需要ApplicationDefinition,如果使用Page,我就会失去它的定位器。
因此,我想让SpashScreen显示时间和延迟在显示主窗体之前更长,但同时也想保存ApplicationDefinition。
谢谢。
4个回答

4

我打开了App.xaml文件,并做出了这些更改来“延迟”显示。

public partial class App : Application
{
    App()
    {
        // Pause to show the splash screen for 3 seconds
        System.Threading.Thread.Sleep(3000);
    }
}

2
一个不好的解决方案会使用户界面线程冻结。最好使用TAP await TaskEx.Delay(1000) - nikeee

4
使用显式方法显示启动画面,并在Show方法中传递false参数。这样,当你想要关闭启动画面时,必须显式调用Close()方法。请参考此链接了解更多信息。

启动屏幕在 .net 4 上与应用程序定义自动工作。 - cnd
是的,但显然它不按照您想要的方式工作,因为它只等待所有资源加载完成。如果您想要调整时间,您必须明确地显示和关闭启动画面。 - Emond
抱歉,我不明白。你能解释一下吗? - Emond
你说“它只等待所有资源加载完毕”,所以我需要减慢这个时间。 - cnd
这是当您使用隐式方式显示启动屏幕时的情况。当您使用显式方式时,您可以控制它。 - Emond
但是,如果我将ApplicationDefinition更改为Page,则会遇到基于MVVM Locator的一些麻烦。因此,我想欺骗默认方法。 - cnd

2
你可以像Jake Glines所写的那样使用System.Threading
using System.Threading;

public MainWindow()
{           
  SplashScreen splash = new SplashScreen("splash.jpg");
  splash.Show(true);
  Thread.Sleep(1500);           
  InitializeComponent();
}

或者您可以在其上使用计时器/进度条,并使其依赖于实际加载,而不仅仅是想象的。


0
另一种方法是找到App.g.cs文件及其Main()函数:
       public static void Main() {
            SplashScreen splashScreen = new SplashScreen("splash.jpg");
            splashScreen.Show(true);
            Thread.Sleep(3000);           
            someNameSpace.App app = new someNameSpace.App();
            app.Run();
       }

唯一新增的字段是 Thread.Sleep(3000);,它将延迟3秒钟显示启动画面。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接