2012-12-26 7 views
13

Mam pole tekstowe w XAMLget telefon akcent szczotka programowo C#

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

Jak mogę uzyskać wartość phoneaccentbrush, programowo (C#) z zasobów systemu Windows Phone 7/7.5/8 tak, że można ustawić pierwszoplanowy kolor pasujący do akcentu wybranego w ustawieniach WP.

Odpowiedz

33

Najpierw trzeba stworzyć currentAccentColorHex przed Konstruktora sobą klasy C#:

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

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

a następnie używać go wszędzie tam, gdzie trzeba ustawić kolor dla kontroli: Przykład własności tło dla sterowania MyControl:

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

Nadzieja ta pomoc

+0

dzięki Spaso :) –

+0

doskonałą odpowiedzią! Dziękuję Ci! –

+0

Niestety, po zmianie tematu za pomocą tej metody, aplikacja musi zostać ponownie uruchomiona. W przeciwnym razie stare wartości motywu zostaną wyciągnięte ze słownika Ressource. – ThisWillDoIt

10

dzięki Spaso :) zrobiłem trochę więcej badań iz waszą pomocą wymyśliłem następujący kod

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

Interesujące. Rozmyślnie staram się nie przesyłać Ci kodu podobnego do twojego, tylko po to, by być bardziej zrozumiałym, co się dzieje. Ok, oba działają. –

+0

Spaso, dał ci uprowadzenie do dostarczenia rozwiązania na pierwszym miejscu. –

+0

OK. sprawi, że jego rozwiązanie będzie odpowiedzią. –

0

dodać go do pola tekstowego w XAML

Foreground="{StaticResource PhoneAccentBrush}" 

lub ustawić to od C#

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