2012-12-26 13 views
13

Ho casella di testo in XAMLget pennello telefono accento di programmazione C#

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

Come posso ottenere il valore di phoneaccentbrush, a livello di codice (C#) da risorse di sistema di Windows Phone 7/7,5/8 in modo che io possa impostare la colore di primo piano per abbinare l'accento selezionato nelle impostazioni del WP.

risposta

33

In primo luogo, è necessario creare currentAccentColorHex prima di costruttore di voi C# classe:

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

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

e quindi utilizzarlo ovunque è necessario impostare il colore per il controllo: Esempio per la proprietà Sfondo per MyControl controllo:

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

Spero che questo aiuto

+0

grazie Spaso :) –

+0

risposta perfetta! grazie! –

+0

Sfortunatamente l'app deve essere riavviata dopo un cambio di tema con questo metodo. In caso contrario, i vecchi valori del tema verranno estratti dal dizionario Ressource. – ThisWillDoIt

10

grazie Spaso :) mi ha fatto poco più ricerca e con il vostro aiuto mi si avvicinò con seguente codice

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

Interessante. Evito volutamente di non inviarti un codice come il tuo, solo per essere più chiaro di quello che sta succedendo. Ok, entrambi i codici funzionano. –

+0

Spaso, ti ha dato un upvote per fornire la soluzione in primo luogo –

+0

okay tim. farà la sua soluzione come risposta. –

0

aggiungere questo alla vostra casella di testo in XAML

Foreground="{StaticResource PhoneAccentBrush}" 

o impostare questo da C#

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