如何取得或設定主要應用程式視窗 (WPF .NET)
本文將教導您如何取得或設定 Windows Presentation Foundation 的主要應用程式視窗(WPF)。 在 WPF 應用程式中具現化的第一個 Window ,會自動設定 Application 為主要應用程式視窗。 主視窗會使用 Application.MainWindow 屬性來參考。
專案範本在應用程式內將 設定 Application.StartupUri 為 XAML 檔案的大部分時間,例如 _Window1.xaml_ 。 這是應用程式具現化並顯示的第一個視窗,而且它會變成主視窗。
提示
應用程式的預設行為是關閉最後一個視窗時關閉。 這個行為是由 Application.ShutdownMode 屬性所控制。 相反地,如果 已關閉,您可以將應用程式設定為關閉 MainWindow 。 設定 Application.ShutdownMode 為 OnMainWindowClose 以啟用此行為。
在 XAML 中設定主視窗
產生 WPF 應用程式的範本通常會將 Application.StartupUri 屬性設定為 XAML 檔案。 此屬性很有用,因為:
- 它可以輕鬆地變更為專案中的不同 XAML 檔案。
- 自動具現化並顯示指定的視窗。
- 指定的視窗會 Application.MainWindow 變成 。
<Application x:Class="MainApp.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:MainApp"
StartupUri="Window1.xaml">
</Application>
您可以使用 ,而不是使用 Application.StartupUri ,將 設定 Application.MainWindow 為 XAML 宣告的視窗。 不過,此處指定的視窗將不會顯示,而且您必須設定其可見度。
<Application x:Class="MainApp.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:MainApp">
<Application.MainWindow>
<local:Window2 Visibility="Visible" />
</Application.MainWindow>
</Application>
警告
如果您同時設定 Application.StartupUri 和 Application.MainWindow 屬性,則會在應用程式啟動時顯示這兩個視窗。
此外,您可以使用 Application.Startup 事件來開啟視窗。 如需詳細資訊,請參閱 使用啟動事件開啟視窗 。
在程式碼中設定主視窗
應用程式具現化的第一個視窗會自動成為主視窗,並設定為 Application.MainWindow 屬性。 若要設定不同的主視窗,請將此屬性變更為視窗:
Application.Current.MainWindow = new Window2();
Application.Current.MainWindow.Show();
Application.Current.MainWindow = New Window2()
Application.Current.MainWindow.Show()
如果您的應用程式從未建立視窗的實例,下列程式碼的功能相當於先前的程式碼:
var appWindow = new Window2();
appWindow.Show();
Dim appWindow As New Window2()
appWindow.Show()
一旦建立視窗物件實例,就會將它指派給 Application.MainWindow 。
取得主視窗
您可以藉由檢查 屬性來存取選擇為主視窗的 Application.MainWindow 視窗。 下列程式碼會在按一下按鈕時,顯示主視窗標題的訊息方塊:
private void Button_Click(object sender, RoutedEventArgs e) =>
MessageBox.Show($"The main window's title is: {Application.Current.MainWindow.Title}");
Private Sub Button_Click(sender As Object, e As RoutedEventArgs)
MessageBox.Show($"The main window's title is: {Application.Current.MainWindow.Title}")
End Sub
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應