在Application_Startup中显示窗口.WPF

Ale*_*kha 3 .net wpf

我有这段小代码.

private void Application_Startup(object sender, StartupEventArgs e)
        {
            WndAbout ab = new WndAbout();
            ab.Show();
        }
Run Code Online (Sandbox Code Playgroud)

并且希望在应用程序启动时显示窗口或对话框,然后再加载其他模块.

但!当我关闭显示的窗口时,后面启动的主窗口也会关闭!

我究竟做错了什么?我试图制作Showdialog() - 同样的情况发生了.

HCL*_*HCL 6

您遇到的问题来自WPF管理关机的方式.

您可以通过... 更改关机行为

Application.Current.ShutdownMode
Run Code Online (Sandbox Code Playgroud)

...财产.将其更改为适当的值:

Application.Current.ShutdownMode = System.Windows.ShutdownMode.OnLastWindowClose;
Run Code Online (Sandbox Code Playgroud)

这会有所帮助.

另一种方法是手动将MainWindow-property 设置为第二个窗口.

如果您只想制作启动画面,请使用自.net 3.51以来可用的启动画面选项.IT的优势在于它在应用程序加载序列中很早就加载了,比窗口早得多.

要做到这一点,在您的项目资源管理器打开图像的属性选项卡,并设置生成操作闪屏


更新

在我的一个应用程序中,我有一个设计,在显示主窗口之前还必须显示模态对话框.这时我还不知道这个ShutdownMode属性.

我做的是我第一次开始Window对用户不可见的.这是第一个窗口,它还控制了app-livetime(WPF的默认行为).从这个窗口出来,我打开了所需的对话框(一个显示模态的窗口).如果此对话框已完成不成功,我终止了隐藏窗口并完全关闭了应用程序.如果对话结果正常,我创建了第一个MainWindow实例,用户可以使用.