Comment obtenir ou définir la fenêtre d’application principale (WPF .NET)

Cet article explique comment obtenir ou définir la fenêtre d’application principale de Windows Presentation Foundation (WPF). La première Window instanciée dans une application WPF est automatiquement définie comme Application fenêtre d’application principale. La fenêtre principale est référencée avec la Application.MainWindow propriété.

La plupart du temps, un modèle de projet définit le Application.StartupUri fichier XAML dans votre application, par _Window1.xaml_exemple . Il s’agit de la première fenêtre instanciée et affichée par votre application, et devient la fenêtre principale.

Conseil

Le comportement par défaut d’une application est d’arrêter lorsque la dernière fenêtre est fermée. Ce comportement est contrôlé par la Application.ShutdownMode propriété. Au lieu de cela, vous pouvez configurer l’application pour qu’elle s’arrête si elle MainWindow est fermée. Définissez cette option Application.ShutdownMode pour OnMainWindowClose activer ce comportement.

Définir la fenêtre principale en XAML

Les modèles qui génèrent votre application WPF définissent généralement la Application.StartupUri propriété sur un fichier XAML. Cette propriété est utile, car :

  1. Il est facilement modifiable d’utiliser un autre fichier XAML dans votre projet.
  2. Instancie et affiche automatiquement la fenêtre spécifiée.
  3. La fenêtre spécifiée devient le 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>

Au lieu d’utiliser Application.StartupUri, vous pouvez définir la Application.MainWindow valeur sur une fenêtre déclarée PAR XAML. Toutefois, la fenêtre spécifiée ici ne s’affiche pas et vous devez définir sa visibilité.

<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>

Attention

Si vous définissez à la fois les propriétés et les Application.StartupUriApplication.MainWindow propriétés, vous affichez les deux fenêtres au démarrage de votre application.

En outre, vous pouvez utiliser l’événement Application.Startup pour ouvrir une fenêtre. Pour plus d’informations, consultez Utiliser l’événement Startup pour ouvrir une fenêtre.

Définir la fenêtre principale dans le code

La première fenêtre instanciée par votre application devient automatiquement la fenêtre principale et est définie sur la Application.MainWindow propriété. Pour définir une autre fenêtre principale, remplacez cette propriété par une fenêtre :

Application.Current.MainWindow = new Window2();

Application.Current.MainWindow.Show();
Application.Current.MainWindow = New Window2()

Application.Current.MainWindow.Show()

Si votre application n’a jamais créé d’instance d’une fenêtre, le code suivant est fonctionnellement équivalent au code précédent :

var appWindow = new Window2();

appWindow.Show();
Dim appWindow As New Window2()

appWindow.Show()

Dès que l’instance d’objet de fenêtre est créée, elle est affectée à Application.MainWindow.

Obtenir la fenêtre principale

Vous pouvez accéder à la fenêtre choisie comme fenêtre principale en inspectant la Application.MainWindow propriété. Le code suivant affiche une boîte de message avec le titre de la fenêtre principale lorsqu’un bouton est cliqué :

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

Voir aussi