我想根据用户在手机上选择的主题来更改矩形的颜色。
EG 当用户将其设备的主题颜色设置为浅色时,矩形应为蓝色,当主题设置为暗时,应为灰色。
有什么想法吗?
由于
答案 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.xaml
和Dark.xaml
将包含具有相同名称的资源。
您可以获取代码并详细了解on my blog。