我在App.xaml.cs中有以下代码:
protected override void OnStartup(StartupEventArgs e)
{
var window = new WelcomeWindow();
if (window.ShowDialog() == true)
{
var mainWindow = new MainWindow();
mainWindow.ShowDialog();
}
}
第二个窗口永远不显示。相反,应用程序只在关闭“欢迎”窗口时关闭。如何在第一个窗口关闭后确保显示第二个窗口?
答案 0 :(得分:4)
这是因为Application.ShutdownMode的默认值为OnLastWindowClose
。这意味着当您的WelcomeWindow
关闭时,应用程序将关闭,您不会再看到任何内容。
要解决此设置ShutdownMode
至OnExplicitShutdown
,并在您要退出应用时明确致电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。这将是真的。