2011-07-11 117 views

回答

2

我寫了一個自定義資源字典實現,它在運行時選擇另一個字典,而不會影響性能,並在Visual Studio設計器中工作。你會使用這樣的:

<Application.Resources> 
    <custom:ThemeResourceDictionary> 
    <custom:ThemeResourceDictionary.LightResources> 
     <ResourceDictionary Source="/ThemeManagement;component/Resources/Light.xaml" /> 
    </custom:ThemeResourceDictionary.LightResources> 
    <custom:ThemeResourceDictionary.DarkResources> 
     <ResourceDictionary Source="/ThemeManagement;component/Resources/Dark.xaml" /> 
    </custom:ThemeResourceDictionary.DarkResources> 
    </custom:ThemeResourceDictionary> 
</Application.Resources> 

Light.xamlDark.xaml將包含資源具有相同的名稱。

你可以得到的代碼,並閱讀更多關於它on my blog

+0

哇,謝謝你的詳細回覆。這非常有幫助。 – user700645

3

這種事情將能夠確定什麼主題設置爲(黑暗或光明)。您可能希望將其構建到您可以綁定到您的畫筆的屬性中。

Visibility v = (Visibility)Resources["PhoneLightThemeVisibility"]; 
if (v == System.Windows.Visibility.Visible) 
{ 
    // set your brush to blue 
} 
else 
{ 
    // set your brush to grey 
} 

您還可以得到與PhoneAccentBrush用戶選擇的強調色,如果你需要考慮到這一點爲好。

+0

還有PhoneDarkThemeOpacity作爲替代方式訪問,返回1或0 - 您可以在這裏找到所有內部WP7-Theme-Resources的完整列表作爲備忘單:http://bit.ly/kzhoog: ) – Anheledir

相關問題