Share via


如何取得或設定主要應用程式視窗 (WPF .NET)

本文將教導您如何取得或設定 Windows Presentation Foundation 的主要應用程式視窗(WPF)。 在 WPF 應用程式中具現化的第一個 Window ,會自動設定 Application 為主要應用程式視窗。 主視窗會使用 Application.MainWindow 屬性來參考。

專案範本在應用程式內將 設定 Application.StartupUri 為 XAML 檔案的大部分時間,例如 _Window1.xaml_ 。 這是應用程式具現化並顯示的第一個視窗,而且它會變成主視窗。

提示

應用程式的預設行為是關閉最後一個視窗時關閉。 這個行為是由 Application.ShutdownMode 屬性所控制。 相反地,如果 已關閉,您可以將應用程式設定為關閉 MainWindow 。 設定 Application.ShutdownModeOnMainWindowClose 以啟用此行為。

在 XAML 中設定主視窗

產生 WPF 應用程式的範本通常會將 Application.StartupUri 屬性設定為 XAML 檔案。 此屬性很有用,因為:

  1. 它可以輕鬆地變更為專案中的不同 XAML 檔案。
  2. 自動具現化並顯示指定的視窗。
  3. 指定的視窗會 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.StartupUriApplication.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

另請參閱