2010-11-21 18 views
6

Jak mogę określić w moim kodzie, jaki "motyw" jest włączony (tzn. Jasny lub Ciemny)?Ustawienie tematu tła w Windows Phone 7 - Opracowanie aplikacji

UPDATE:

OK, po zrobieniu trochę więcej badań, udało mi się znaleźć coś, co wydaje się robić to, co muszę. Może jednak jest lepszy sposób?

Myśli?

Oto co znalazłem, że odpowiedzi na moje pytanie teraz:

var backColor = Resources["PhoneBackgroundColor"]; 
+0

Kontrola RGB Wartości prace ale nowy „PhoneLightThemeVisibility” zasób jest preferowany - zobacz moją odpowiedź. – mikeesouth

+0

http://www.kirupa.com/windowsphone/detecting_the_theme.htm –

+0

Wypróbuj klasę kompozycji dostępną tutaj: https://github.com/ZombieHunter/WP7-Theme – CodeZombie

Odpowiedz

9

We wczesnej fazie beta zwalnia sposób to zrobić sprawdzał wartości RGB PhoneBackgroundColor tak jak wskazał innymi tutaj. Jednak to się zmieniło.
Teraz najlepszym sposobem na osiągnięcie tego jest sprawdzenie widoczności „PhoneLightThemeVisibility” jako taki (mimo sprawdzania wartości RGB nadal działa):

Visibility v = (Visibility)Resources["PhoneLightThemeVisibility"]; 
if (v == System.Windows.Visibility.Visible) 
{ 
    // Light theme 
} 
else 
{ 
    // Dark theme 
} 

HTH

+0

+1 To jest dobry sposób robienia tego. – keyboardP

3

Obecnie, sprawdzając wartość PhoneBackgroundColor wydaje się być przyjęta metoda wykrywania motywu. Możesz sprawdzić wartość poniższym kodem, który jest z this post.

private Color lightThemeBackground = Color.FromArgb(255, 255, 255, 255); 
private Color darkThemeBackground = Color.FromArgb(255, 0, 0, 0); 




private void DisplayState() 
{ 

SolidColorBrush backgroundBrush = Application.Current.Resources["PhoneBackgroundBrush"] as SolidColorBrush; 

if (backgroundBrush.Color == lightThemeBackground) 
{ 

// you are in the light theme 

} 
else 
{ 

// you are in the dark theme 

} 

} 
+0

Sprawdzanie wartości RGB działa, ale nowy zasób "PhoneLightThemeVisibility" jest preferowany - zobacz moją odpowiedź. – mikeesouth

Powiązane problemy