2012-12-26 13 views
13

I Textbox in XAML habeget Telefon accent brush programmatisch C#

<TextBlock Style="{StaticResource PhoneTextExtraLargeStyle}" FontSize="{StaticResource PhoneFontSizeLarge}" FontFamily="{StaticResource PhoneFontFamilySemiLight}" Margin="12,10,12,0" /> 

Wie kann ich Wert von phoneaccentbrush erhalten, programmatisch (C#) von Systemressourcen von Windows Mobile 7/7.5/8, so dass ich die eingestellte Vordergrundfarbe, um mit dem in den Einstellungen des WP ausgewählten Akzent übereinzustimmen.

Antwort

33

Zuerst müssen Sie currentAccentColorHex vor Constructor von Ihnen C# Klasse erstellen:

public partial class MainPage : PhoneApplicationPage 
{ 
    Color currentAccentColorHex = (Color)Application.Current.Resources["PhoneAccentColor"]; 

    // Constructor 
    public MainPage() 
    {   
     //... 

und dann verwenden sie, wo immer Sie Farbe für die Steuerung festlegen müssen: Beispiel für Background-Eigenschaft für die Steuerung MyControl:

SolidColorBrush backColor = new SolidColorBrush(currentAccentColorHex); 
MyControl.Background = backColor; 

Hope this Hilfe

+0

dank Spasopreobraschenskij :) –

+0

perfekte Antwort! Danke! –

+0

Leider muss die App nach einem Thema mit dieser Methode neu gestartet werden. Andernfalls werden die alten Themenwerte aus dem Ressourcenwörterbuch entfernt. – ThisWillDoIt

10

dank Spasopreobraschenskij :) ich habe wenig mehr Forschung und mit Ihrer Hilfe kam ich mit folgendem Code auf

var phoneAccentBrush = new SolidColorBrush((App.Current.Resources["PhoneAccentBrush"] as SolidColorBrush).Color); 
+0

Interessant. Ich vermeide es bewusst, Ihnen keinen Code wie Ihren zu schicken, nur um klarer zu sein, was vor sich geht. Ok, beide Codes funktionieren. –

+0

Spaso, gab Ihnen ein upvote für die Bereitstellung der Lösung in erster Linie –

+0

okay tim. wird seine Lösung als Antwort geben. –

0

fügen Sie diese zu Ihrer Textbox auf XAML

Foreground="{StaticResource PhoneAccentBrush}" 

oder setzen Sie diese von C#

btnDefault.Foreground = new SolidColorBrush((Color)Application.Current.Resources["PhoneAccentColor"]);