2012-02-21 88 views

回答

3

你可以在手機上的主題(暗/燈光),在更短的方式(對XNA工程太):

Visibility darkBackgroundVisibility = (Visibility)Application.Current.Resources["PhoneDarkThemeVisibility"]; 

if(darkBackgroundVisibility == Visibility.Visible) 
    //Theme is Dark 
else 
    //Theme is Light 

要獲得AccentColor,您需要更多代碼(我從MSDN上的這篇文章中獲得:How to: Apply Theme Resources for Windows Phone)。爲了便於閱讀,我縮短了switch-statement中的代碼並將其放入方法中。我也在一個XNA應用程序中測試了這個,並且這個工作正常! :)

var currentAccentColorHex = (System.Windows.Media.Color)Application.Current.Resources["PhoneAccentColor"]; 
string currentAccentColor = ColorNameFromHex(currentAccentColorHex); 

private string ColorNameFromHex(System.Windows.Media.Color hexColor) 
{ 
    switch(hexColor.ToString()) 
    { 
     case "#FF1BA1E2": return "Blue"; 
     case "#FFA05000": return "Brown"; 
     case "#FF339933": return "Green"; 
     case "#FFE671B8": return "Pink"; 
     case "#FFA200FF": return "Purple"; 
     case "#FFE51400": return "Red"; 
     case "#FF00ABA9": return "Teal"; 
     case "#FF8CBF26": 
     case "#FFA2C139": return "Lime"; 
     case "#FFFF0097": 
     case "#FFD80073": return "Magenta"; 
     case "#FFF09609": return "Mango"; 
     default: return "custom eleventh color"; //Manufacturer color 
    } 
} 

而不是返回一個字符串包含'紅',你可以返回一個'真正的'顏色。爲此,您必須更改方法的返回類型和值。

希望這會有所幫助!

+0

錯誤「應用程序」並不在當前上下文中存在的名稱\t 錯誤類型或命名空間名稱「顏色'在命名空間中不存在'System.Windows.Media' 奇怪的錯誤:( – DanTonyBrown 2012-02-22 01:24:19

+0

請確保您的項目中有對「System.Windows.dll」的引用 – Abbas 2012-02-22 08:30:16

+0

仍然得到應用程序不存在:(顏色是固定但是:) – DanTonyBrown 2012-02-22 10:38:30

0

您可以從資源中獲取當前主題,例如獲取像這樣的背景顏色。在應用程序中,您可以在Application_Launching和Application_Activated中檢查這一點,以查看應用程序在後臺時是否更改了主題。

我敢肯定,你可以做類似的事情在XNA遊戲:

public enum PhoneTheme 
    { 
     Light, 
     Dark 
    }; 

公共靜態PhoneTheme CurrentTheme {獲得;私人設置; }

繼您激活/啓動代碼:

string theme = Resources["PhoneBackgroundColor"].ToString(); 

CurrentTheme = theme == "#FF000000" 
         ? PhoneTheme.Dark 
         : PhoneTheme.Light; 
+0

錯誤名稱「資源」不存在於當前上下文存在 – DanTonyBrown 2012-02-22 10:33:46

相關問題