Как получить или задать главное окно приложения (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-файле. Это свойство полезно, так как:
- Это легко изменится на другой 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
См. также
.NET Desktop feedback