Kolumne XAML Expertise: WPF und Windows-Apps

XAML-Tipp: Standard-Styles überschreiben
Kommentare

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

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

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

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

Abb. 1: Standard-Styles via „TargetType“-Attribute

XAML: Standard-Styles überschreiben

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

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

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

Abb. 2: Standard-Style mit eigenem Style überschreiben

Die zweite Lösung entfernt komplett alle zugewiesenen Styles. Dem Style-Attribute wird dabei nur ein {x:Null} zugwiesen. Dadurch erzeugt der XAML-Parser ein Null-Objekt, das der Style-Property zugewiesen wird (Listing 3 und Abb. 3).

Listing 3: Styles komplett mit „{x:Null}“ entfernen

<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!“ Style=“{x:Null}“ />
</StackPanel>

Abb. 3: Styles komplett entfernt

Die beiden vorgestellten Lösungen sollten allerdings mit Bedacht eingesetzt werden. So haben festgelegte Resource Dictionaries eine wichtige Rolle bei Unternehmensanwendungen. Sie stellen die festgelegten Corporate Identity Guide Lines sicher, und eigene Styles können dieses Regelwerk schnell ungewollt zerbrechen.

Windows Developer

Windows DeveloperDieser Artikel ist im Windows Developer erschienen. Windows Developer informiert umfassend und herstellerneutral über neue Trends und Möglichkeiten der Software- und Systementwicklung rund um Microsoft-Technologien.

Natürlich können Sie den Windows Developer über den entwickler.kiosk auch digital im Browser oder auf Ihren Android- und iOS-Devices lesen. In unserem Shop ist der Windows Developer ferner im Abonnement oder als Einzelheft erhältlich.

 

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -