© best_vector/Shutterstock.com
Kolumne: XAML Expertise

WPF und Universal-Windows-Apps


In der Kolumne „XAML Expertise“ präsentiert Gregor Biswanger nun schon seit fünf Jahren Top-How-tos zum Thema XAML. Einsteiger und fortgeschrittene XAML-Experten sollen hier durch geballtes Wissen gesättigt werden. Heute gibt es folgende Expertise: „XAML: Standard-Styles überschreiben“, „WPF: Virtuelle Tastatur einblenden“ und „WPF: Verteilte Grid-Spalten verknüpfen“. Viel Spaß mit XAML Expertise.

Listing 1: Ein Standard-Style für alle „TextBlock“-Steuerelemente

<Window.Resources> <Style TargetType="TextBlock"> <Setter Property="FontSize" Value="24" /> <Setter Property="Foreground" Value="Blue"></Setter> </Style> </Window.Resources> <StackPanel> <TextBlock Text="Hallo XAML Expertise!" /> <TextBlock Text="Hallo XAML Expertise!" /> <TextBlock Text="Hallo XAML Expertise!" /> </StackPanel>

XAML: Standard-Styles überschreiben

Für das Festlegen von Standard-Styles wird häufig ein ResourceDictionary erzeugt, das die nötigen Styles beinhaltet. Diese werden dann automatisch für die gewünschten Steuerelemente mittels gesetzter TargetType-Attribute aktiv. Das gleiche Prinzip gilt auch für fertige UI-Frameworks wie Material Design In XAML Toolkit. Das Beispiel in Listing 1 zeigt, wie ein solches Style mit gesetztem TargetType für das TextBlock-Steuerelement festgelegt wird. Alle drei TextBlock-Elemente innerhalb des StackPanel erhalten die festgelegten Schrifteinstellungen (Abb. 1).

biswanger_1.tif_fmt1.jpgAbb. 1: Standard-Styles via „TargetType“-Attribute

Die Standard-Styles sind ein angenehmes Feature, andererseits gibt es auch Ausnahmen, wo ein Steuerelement nicht die gesetzten Styles zugwiesen bekommen soll. Dazu gibt es zwei unterschiedliche Lösungen. Die erste ist das Schreiben eines eigenes Styles, das durch ein explizites Zuweisen das Standard-Style automatisch ignoriert (Listing 2 und Abb. 2).

biswanger_2.tif_fmt1.jpgAbb. 2: Standard-Style mit eigenem Style überschreiben

Listing 2: Ein Standard-Style mit eigenem Style überschreiben

<Window.Resources> <Style TargetType="TextBlock"> <Setter Property="FontSize" Value="24" /> <Setter Property="Foreground" Value="Blue"></Setter> </Style> <Style x:Key="MyStyle" TargetType="TextBlock"> <Setter Property="Foreground" Value="DarkViolet"></Setter> </Style> </Window.Resources> <StackPanel> <TextBlock Text="Hallo XAML Expertise!" /> <TextBlock Text="Hallo XAML Expertise!" Style="{DynamicResource MyStyle}" /> <TextBlock Text="Hallo XAML Expertise!" /> </StackPanel>

Die zweite Lösung entfernt komplett alle zugewiesenen Styles. Dem Style-Attribut wird dabei nur ein {x:...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang