更改Windows Phone 7的主题感知应用程序的颜色

时间:2011-07-11 14:04:07

标签: xaml windows-phone-7 expression-blend

我想根据用户在手机上选择的主题来更改矩形的颜色。

EG 当用户将其设备的主题颜色设置为浅色时,矩形应为蓝色,当主题设置为暗时,应为灰色。

有什么想法吗?

由于

2 个答案:

答案 0 :(得分:3)

这种东西能够确定主题设置为什么(暗或亮)。您可能希望将其构建为可以为画笔绑定的属性。

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

如果您还需要考虑到这一点,也可以使用PhoneAccentBrush获取用户选择的强调色。

答案 1 :(得分: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