Как получить или задать главное окно приложения (WPF .NET)

В этой статье описано, как получить или задать главное окно приложения для Windows Presentation Foundation (WPF). Первое Window , которое создается в приложении WPF, автоматически устанавливается Application в качестве главного окна приложения. Основное окно ссылается на Application.MainWindow свойство.

Большую часть времени, когда шаблон проекта установит Application.StartupUri файл XAML в приложении, например _Window1.xaml_. Это первое окно, созданное и отображаемое приложением, и оно становится основным окном.

Совет

Поведение по умолчанию для приложения — завершение работы при закрытии последнего окна. Это поведение управляется свойством Application.ShutdownMode . Вместо этого можно настроить приложение для завершения работы, если он MainWindow закрыт. Установите для Application.ShutdownMode OnMainWindowClose включения этого поведения.

Установка главного окна в 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.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

См. также