Partager via


Comment obtenir ou définir la fenêtre d’application principale

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 par Application comme la 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 associera le Application.StartupUri à un fichier XAML au sein de votre application, tel que _Window1.xaml_. Il s’agit de la première fenêtre instanciée et affichée par votre application, et devient la fenêtre principale.

Conseil / Astuce

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 MainWindow est fermé. Définissez Application.ShutdownMode sur OnMainWindowClose pour 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 facile de modifier le fichier XAML pour un autre disponible 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 Application.MainWindow 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>

Avertissement

Si vous définissez à la fois les propriétés Application.StartupUri et Application.MainWindow, vous afficherez 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.

Accéder à 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