如何在WPF中按顺序显示窗口?

如何在WPF中按顺序显示窗口?,wpf,Wpf,我在App.xaml.cs中有以下代码: protected override void OnStartup(StartupEventArgs e) { var window = new WelcomeWindow(); if (window.ShowDialog() == true) { var mainWindow = new MainWindow(); mainW

我在App.xaml.cs中有以下代码:

    protected override void OnStartup(StartupEventArgs e)
        {
        var window = new WelcomeWindow();
        if (window.ShowDialog() == true)
            {
            var mainWindow = new MainWindow();
            mainWindow.ShowDialog();
            }
        }

第二个窗口从不显示。相反,当欢迎窗口关闭时,应用程序只会关闭。如何确保在第一个窗口关闭后可以显示第二个窗口?

在主窗口的初始化事件中显示WelcomeWindow,如果对话框不正确,则最后关闭。这是您让MainWindow保留应用程序的主窗口

    private void Window_Initialized(object sender, EventArgs e)
    {
        // at this moment MainWindow is Initialized but still nonvisible
        if ((new WelcomeWindow()).ShowDialog()!=true)
        {
            this.Close();
        }
    }
当您加载任何窗口应用程序时,它将成为应用程序的主窗口。它会在这个窗口关闭时关闭。 我已经检查过,即使您的app.xaml中有StartupUri=“MainWindow.xaml”,但如果在应用程序启动事件中显示了其他窗口,则不会产生任何影响。
你可以自己做。只需在第一个加载的窗口加载的事件处理程序上设置断点,并在“Aplication.Current.MainWindow==this”表达式结果上查看调试程序。这将是真的。

这是因为的默认值为。这意味着当您的
WelcomeWindow
关闭时,应用程序将关闭,您将看不到更多内容

要解决此问题,请将
ShutdownMode
设置为,如果要退出应用程序,请显式调用

public App()
{
    this.ShutdownMode = ShutdownMode.OnExplicitShutdown;
}

WelcomeWindow在做什么?WelcomeWindow登录了吗?app.xaml中的StartupUri值是多少?