Süßer als vom verbotenen Baum?

10 Tipps für Windows Phone Mango Tipp 6 Eingebaute Themes und deren Überschreibung
Kommentare

Einst galt sie als Speise der Götter – „Mangifera indica“ so der lateinische Name der Frucht, die namensgebend für die neueste Version von Windows Phone ist. In dieser Artikelserie erfahren Sie Tipps und Tricks, die die Entwicklung Ihrer Windows-Phone-7.5-Applikation erleichtern sollen. Beginnen wollen wir mit dem Bauen von Standort-abhängigen Anwendungen.

Windows Phone bietet Endbenutzern die Möglichkeit unterschiedliche „Themes“ einzurichten. Zur Auswahl stehen ein heller oder dunkler Hintergrund sowie mehrere Akzentfarben. Diese Farbeinstellungen werden in den eingebauten Menüs und Applikationen des Betriebssystems verwendet. Auch die Controls Ihrer Applikation passen sich standardmäßig automatisch den Farben an. Abbildung 1 zeigt eine Beispielapplikation in zwei unterschiedlichen Farbvarianten.

Abb.1: Windows Phone Themes
Abb.1: Windows Phone Themes
Eingebaute Themes verwenden

Bei automatischen Farbwerten beginnen die Probleme immer dann, wenn Sie manche Werte selbst manuell setzen. Was, wenn Sie zum Beispiel einem TextBlock eine weiße Farbe gegeben haben und der Benutzer sich für das Light Theme entschieden hat? Aus diesem Grund gibt es eingebaute Brushes, die Sie verwenden sollten. Wann immer Sie die Standardfarbe für Vordergrund oder Hintergrund wollen, geben Sie einfach keine Farbe an. Die eingebauten Brushes und Styles finden Sie in der MSDN-Dokumentation [1]. In Listing 1 finden Sie ein Beispiel für die Anwendung von PhoneAccentBrushes in Kombination mit normalem Text in einer einzelnen Zeile.

Listing 1: Eingebaute Themes verwenden


     
     
     

  
Eingebaute Themes überschreiben

Immer wieder kann es jedoch zu Situationen kommen, wo sich Ihre Controls nicht automatisch an die eingebauten Themes anpassen sollen. Wenn Sie zum Beispiel ein dunkles Hintergrundbild verwenden, wird eine schwarze Textfarbe nur schwer lesbar sein. In diesem Fall sollten Sie die eingebauten, automatisch anpassenden Themes durch eigene, fixe Werte überschreiben. Bedenken Sie aber, dass Sie dadurch die persönliche Farbauswahl der Benutzerin ignorieren. Deshalb sollten Sie dieses Mittel so selten wie möglich einsetzen. Unter C:Program Files (x86)microsoft sdksWindows Phonev7.1Design finden Sie Vorlagen für alle eingebauten Theme-Kombinationen. Entscheiden Sie sich für ein Theme und fügen Sie die Datei ThemeResources.xaml aus dem Unterverzeichnis Ihrem Projekt hinzu. Danach rufen Sie Listing 2 aus der Methode InitializeComponents aus der App.xaml.cs-Datei auf und überschreiben somit die eingebauten Styles.

Listing 2: Eingebaute Themes überschreiben

// In App.xaml.cs: 
private void MergeCustomColors()
{
    var dict = new ResourceDictionary();
    string source = String.Format("/PhoneApp1;component/ThemeResources.xaml");
    var themeStyles = new ResourceDictionary { Source = new Uri(source, UriKind.Relative) };
    dict.MergedDictionaries.Add(themeStyles);

    ResourceDictionary appResources = App.Current.Resources;
    foreach (DictionaryEntry entry in dict.MergedDictionaries[0])
    {
        var colorBrush = entry.Value as SolidColorBrush;
        var existingBrush = appResources[entry.Key] as SolidColorBrush;
        if (existingBrush != null && colorBrush != null)
        {
            existingBrush.Color = colorBrush.Color;
        }
    }
}
  

Damit zumindest ein kleiner Teil der Farbauswahl der Benutzer erhalten bleibt, rät der Autor den Farbwert PhoneAccentColor aus der ThemeResources.xaml-Datei im Projekt zu entfernen. Dadurch wird dieser Wert nicht überschrieben. Ein kleiner Tipp: Mit dem Werkzeug Expression Blend 4, das mit den Phone Tools installiert wird, können Sie Ihre Anwendung in den unterschiedlichen Themes ansehen, um mögliche Probleme der Farbkombinationen zu entdecken.

Fazit: Die Standard-Controls passen ihre Farben automatisch den Themes von Windows Phone an, die durch die Benutzer ausgewählt werden. Beim manuellen Überschreiben von Farbwerten muss man vorsichtig vorgehen, um keine unlesbaren oder eigenartigen Kombinationen zu bekommen.

DI Max Knor ist Technologieberater für Softwareentwicklung. Er betreut als Technical Global Alliance Manager bei Microsoft Corp. eine Hand voll internationaler ISVs im Bereich Retail-Software. Max hält Vorlesungen zu Cloud Computing, Softwarearchitekturen und Webentwicklung an zwei Fachhochschulen.
Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -