如何在WPF中按顺序显示窗口?
我在App.xaml.cs中有以下代码:如何在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
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值是多少?