XAML-Kolumne: WPF und Windows-Apps

XAML-Tipp: WPF – Die Fenstergröße merken
Kommentare

In der Kolumne „XAML Expertise“ präsentiert Gregor Biswanger Top-How-tos zum Thema XAML. Einsteiger und fortgeschrittene XAML-Experten sollen hier durch geballtes Wissen gesättigt werden. Heute gibt es folgende Expertise: „WPF: Die Fenstergröße merken“.

WPF: Die Fenstergröße merken

Die Fenstergröße unter Windows beliebig anzupassen und auf diese Weise zu arbeiten, macht Spaß. Eher unangenehm wird es, wenn beim nächsten Start der Anwendung wieder alles neu angepasst werden muss. So ist es allerdings standardmäßig unter WPF-Anwendungen der Fall. Um die Anwendung dazu zu bringen, sich die Fenstergröße zu merken, muss man selbst Hand anlegen.

Zuerst müssen die Daten der Fenstergröße dauerhaft festgelegt werden. Dafür eignen sich die Application-Settings. Diese befinden sich beim Solution Explorer unter Properties. Ein Doppelklick genügt und es öffnet sich ein Tab innerhalb von Visual Studio. Links unter Settings befinden sich die Application-Settings. Wie die Einstellungen festgelegt werden müssen, zeigt Abbildung 2.

Abb. 2: Die Application-Settings festlegen

Abb. 2: Die Application-Settings festlegen

Beim gewünschten Hauptfenster wird ein Data Binding auf die neu erstellten Settings deklariert. Dazu wird für die Settings ein XML-Namespace mit dem Präfix properties festgelegt. Für die Fenstereigenschaften Top, Left, Width, Height und WindowState erfolgt ein Data Binding auf eine statische Instanz von properties. So wird beim Laden der Anwendung die Einstellung der Fenstergröße festgelegt, oder jede Veränderung zurückgeschrieben. Listing 2 zeigt das erforderliche Data Binding.

Listing 2: Das Data Binding für die Application-Settings setzen

<Window x:Class="WpfRememberWindowSize.MainWindow"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
  xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
  xmlns:properties="clr-namespace:WpfRememberWindowSize.Properties"
  Top="{Binding Source={x:Static properties:Settings.Default}, Path=WindowTop, Mode=TwoWay}"
  Left="{Binding Source={x:Static properties:Settings.Default}, Path=WindowLeft, Mode=TwoWay}"
  Height="{Binding Source={x:Static properties:Settings.Default}, Path=WindowHeight, Mode=TwoWay}"
  Width="{Binding Source={x:Static properties:Settings.Default}, Path=WindowWidth, Mode=TwoWay}"
  WindowState="{Binding Source={x:Static properties:Settings.Default}, Path=WindowState, Mode=TwoWay}"
  mc:Ignorable="d"
Title="MainWindow">

Beim Verändern der Fenstergröße werden diese zwar der statischen Instanz der Settings zurückgeschrieben, aber nicht dauerhaft abgespeichert. Zum Abspeichern der Settings muss in der App.xaml-Datei das Exit-Event abonniert werden. Innerhalb der OnApplicationExit-Methode erfolgt der Zugriff auf die Save-Methode der Settings. Mehr ist nicht nötig, damit die Fenstergröße wiederhergestellt und festgelegt wird. Der Anwender wird nun ein Stück glücklicher mit unserer Software.

Listing 3: Die Application-Settings beim Beenden der Software dauerhaft abspeichern

private void OnApplicationExit(object sender, ExitEventArgs e)
{
  WpfRememberWindowSize.Properties.Settings.Default.Save();
}

Aufmacherbild: Look through a windows from outside to inside von Shutterstock / Urheberrecht: Ints Vikmanis

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -