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

时间:2014-01-18 19:03:40

标签: wpf

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

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

第二个窗口永远不显示。相反,应用程序只在关闭“欢迎”窗口时关闭。如何在第一个窗口关闭后确保显示第二个窗口?

2 个答案:

答案 0 :(得分:4)

这是因为Application.ShutdownMode的默认值为OnLastWindowClose。这意味着当您的WelcomeWindow关闭时,应用程序将关闭,您不会再看到任何内容。

要解决此设置ShutdownModeOnExplicitShutdown,并在您要退出应用时明确致电Shutdown

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

答案 1 :(得分:1)

如何在MainWindow的Initialized事件上显示WelcomeWindow,如果Dialog不为true,则关闭last。这是你让MainWindow留在MainWindow of Application。

    private void Window_Initialized(object sender, EventArgs e)
    {
        // at this moment MainWindow is Initialized but still nonvisible
        if ((new WelcomeWindow()).ShowDialog()!=true)
        {
            this.Close();
        }
    }

当您加载任何窗口Application_Startup时,它将成为应用程序的MainWindow。它会在这个窗口关闭时关闭。 我已经检查过,即使您在app.xaml中有StartupUri =“MainWindow.xaml”,如果在Application StartUp事件中显示了其他窗口,它也没有效果。 你可以自己做。只需在你的第一个加载窗口上加载断点加载事件处理程序,然后在“Aplication.Current.MainWindow == this”表达式结果中查看debuger。这将是真的。