Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel erfahren Sie, wie Sie das Hauptanwendungsfenster für Windows Presentation Foundation (WPF) abrufen oder festlegen. Der erste Window, der in einer WPF-Anwendung instanziiert wird, wird automatisch von Application als Hauptanwendungsfenster festgelegt. Auf das Hauptfenster wird mit der Application.MainWindow Eigenschaft verwiesen.
Die Projektvorlage legt häufig Application.StartupUri auf eine XAML-Datei in Ihrer Anwendung fest, wie z. B. _Window1.xaml_. Dies ist das erste Fenster, das von Ihrer Anwendung instanziiert und angezeigt wird, und es wird zum Hauptfenster.
Tipp
Das Standardverhalten für eine Anwendung ist das Herunterfahren, wenn das letzte Fenster geschlossen wird. Dieses Verhalten wird von der Application.ShutdownMode Eigenschaft gesteuert. Stattdessen können Sie die Anwendung so konfigurieren, dass sie heruntergefahren wird, wenn MainWindow geschlossen wird. Setzen Sie Application.ShutdownMode auf OnMainWindowClose, um dieses Verhalten zu aktivieren.
Festlegen des Hauptfensters in XAML
Die Vorlagen, die für Ihre WPF-Anwendung verwendet werden, legen die Application.StartupUri-Eigenschaft auf eine XAML-Datei fest. Diese Eigenschaft ist hilfreich, da:
- Sie kann ganz einfach in eine andere XAML-Datei in Ihrem Projekt geändert werden.
- Instanziiert automatisch und zeigt das angegebene Fenster an.
- Das angegebene Fenster wird zum 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>
Statt zu verwenden Application.StartupUri, können Sie das Application.MainWindow Fenster auf ein XAML-deklariertes Fenster festlegen. Das hier angegebene Fenster wird jedoch nicht angezeigt, und Sie müssen die Sichtbarkeit festlegen.
<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>
Vorsicht
Wenn Sie sowohl die Application.StartupUri- als auch die Application.MainWindow-Eigenschaften festlegen, werden beim Start der Anwendung beide Fenster angezeigt.
Außerdem können Sie das Application.Startup Ereignis verwenden, um ein Fenster zu öffnen. Weitere Informationen finden Sie unter Verwenden des Startereignisses zum Öffnen eines Fensters.
Festlegen des Hauptfensters im Code
Das erste von der Anwendung instanziierte Fenster wird automatisch zum Hauptfenster und wird auf die Application.MainWindow Eigenschaft festgelegt. Wenn Sie ein anderes Hauptfenster festlegen möchten, ändern Sie diese Eigenschaft in ein Fenster:
Application.Current.MainWindow = new Window2();
Application.Current.MainWindow.Show();
Application.Current.MainWindow = New Window2()
Application.Current.MainWindow.Show()
Wenn Ihre Anwendung noch nie eine Instanz eines Fensters erstellt hat, entspricht der folgende Code funktional dem vorherigen Code:
var appWindow = new Window2();
appWindow.Show();
Dim appWindow As New Window2()
appWindow.Show()
Sobald die Fensterobjektinstanz erstellt wird, wird sie zugewiesen Application.MainWindow.
Abrufen des Hauptfensters
Sie können auf das fenster zugreifen, das als Hauptfenster ausgewählt wurde, indem Sie die Application.MainWindow Eigenschaft prüfen. Der folgende Code zeigt ein Meldungsfeld mit dem Titel des Hauptfensters an, wenn auf eine Schaltfläche geklickt wird:
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
Siehe auch
.NET Desktop feedback