2010-11-21 3 views
6

Comment puis-je dire dans mon code quel est le "thème" du téléphone (c'est-à-dire Light ou Dark)?Windows Phone 7 Arrière-plan Paramètre du thème - Développement de l'application

MISE À JOUR:

OK, après avoir fait un peu plus de recherche, j'ai pu trouver quelque chose qui semble faire ce que je dois. Cependant, peut-être qu'il existe un meilleur moyen?

Pensées?

Voici ce que je trouve que répond à ma question pour l'instant:

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

Vérification des valeurs RVB œuvres, mais le nouveau « PhoneLightThemeVisibility » la ressource est préférée - voir ma réponse. – mikeesouth

+0

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

+0

Essayez la classe Theme disponible ici: https://github.com/ZombieHunter/WP7-Theme – CodeZombie

Répondre

9

Au début des versions bêta de la façon de le faire vérifiait les valeurs RVB de PhoneBackgroundColor comme indiqué par d'autres ici. Cependant cela a changé.
Maintenant, le meilleur moyen de le faire est la vérification de la visibilité des « PhoneLightThemeVisibility » en tant que telle (même si la vérification des valeurs RVB fonctionnent toujours):

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

HTH

+0

+1 C'est une bonne façon de le faire. – keyboardP

3

Au moment de vérifier la valeur de PhoneBackgroundColor semble être la méthode acceptée de détection du thème. Vous pouvez vérifier la valeur par le code suivant, qui est 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

Vérification des valeurs RVB fonctionne mais la nouvelle ressource "PhoneLightThemeVisibility" est préféré - voir ma réponse. – mikeesouth