2014-01-18 26 views
3

我在App.xaml.cs以下代碼:如何在WPF中順序顯示窗口?

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

第二個窗口從不顯露。相反,當歡迎窗口關閉時,應用程序會簡單地關閉。如何確保在第一個窗口關閉後可以顯示第二個窗口?

+0

WelcomeWindow在做什麼? – Paparazzi

+0

WelcomeWindow使登錄?什麼是app.xaml中的StartupUri值? – potehin143

回答

4

這是因爲默認值Application.ShutdownModeOnLastWindowClose。這意味着當您的WelcomeWindow關閉時,應用程序關閉,您什麼也看不到。

要解決這個集合ShutdownModeOnExplicitShutdown並且明確地打電話Shutdown如果你想退出你的應用程序。

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

完美,謝謝! –

1

如何在MainWindow的初始化事件上顯示WelcomeWindow,如果Dialog不爲true,則最後關閉。這是你讓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(); 
     } 
    } 

當您加載任何窗口Application_Startup時,它將成爲應用程序的主窗口。它將關閉此窗口。 我已經檢查過,即使你在你的app.xaml中有StartupUri =「MainWindow.xaml」,如果其他窗口已經顯示在Application StartUp事件中,它也沒有效果。 你可以自己做。只需在第一個加載的窗口上創建斷點加載的事件處理程序,並在「Aplication.Current.MainWindow == this」表達式結果的debuger中查找。這將是事實。