Dela via


Hur man hämtar eller anger huvudapplikationsfönstret (WPF .NET)

I den här artikeln lär du dig hur du hämtar eller anger huvudprogrammets fönster för Windows Presentation Foundation (WPF). Den första Window som instansieras i ett WPF-program anges automatiskt av Application som huvudprogramfönstret. Huvudfönstret refereras till med egenskapen Application.MainWindow.

En stor del av tiden anger en projektmall Application.StartupUri till en XAML-fil i programmet, till exempel _Window1.xaml_. Det här är det första fönstret som instansieras och visas av ditt program, och det blir huvudfönstret.

Tips

Standardbeteendet för ett program är att stänga av när det sista fönstret stängs. Det här beteendet styrs av egenskapen Application.ShutdownMode. I stället kan du konfigurera programmet att stängas av om MainWindow stängs. Ange Application.ShutdownMode till OnMainWindowClose för att aktivera det här beteendet.

Ange huvudfönstret i XAML

Mallarna som genererar WPF-programmet anger vanligtvis egenskapen Application.StartupUri till en XAML-fil. Den här egenskapen är användbar eftersom:

  1. Det kan enkelt ändras till en annan XAML-fil i projektet.
  2. Instansierar automatiskt och visar det angivna fönstret.
  3. Det angivna fönstret blir 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>

I stället för att använda Application.StartupUrikan du ange Application.MainWindow till ett XAML-deklarerat fönster. Fönstret som anges här visas dock inte och du måste ange dess synlighet.

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

Försiktighet

Om du anger både egenskaperna Application.StartupUri och Application.MainWindow visas båda fönstren när programmet startas.

Du kan också använda händelsen Application.Startup för att öppna ett fönster. Mer information finns i Använd starthändelsen för att öppna ett fönster.

Ange huvudfönstret i kod

Det första fönstret som instansieras av ditt program blir automatiskt huvudfönstret och anges till egenskapen Application.MainWindow. Om du vill ange ett annat huvudfönster ändrar du den här egenskapen till ett fönster:

Application.Current.MainWindow = new Window2();

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

Application.Current.MainWindow.Show()

Om ditt program aldrig har skapat en instans av ett fönster är följande kod funktionellt likvärdig med den tidigare koden:

var appWindow = new Window2();

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

appWindow.Show()

Så snart fönsterobjektinstansen har skapats tilldelas den till Application.MainWindow.

Hämta huvudfönstret

Du kan komma åt det fönster som valts som huvudfönster genom att granska egenskapen Application.MainWindow. Följande kod visar en meddelanderuta med rubriken för huvudfönstret när en knapp klickas:

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

Se även