我正在为Windows Phone 8创建一个应用程序,我想更改主题颜色,而不管用户在手机操作系统中设置的主题,就像其他应用程序执行此操作一样(例如Skype)。
到目前为止,我只是通过访问XAML中的LayoutRoot元素来设法更改背景颜色:
this.LayoutRoot.Background = new SolidColorBrush(Colors.White);
前景色:
(App.Current.Resources["PhoneForegroundBrush"] as SolidColorBrush).Color = Colors.Green;
但是,以下内容在Windows Phone 8上不起作用:
(App.Current.Resources["PhoneBackgroundBrush"] as SolidColorBrush).Color = Colors.White;
(App.Current.Resources["PhoneAccentBrush"] as SolidColorBrush).Color = Colors.Yellow;
我不知道为什么我无法更改PhoneBackgroundBrush
或PhoneAccentBrush
,我尝试使用谷歌搜索解决方案,但他们只使用Windows Phone 7 SDK。教程here适用于WP 7但不是WP 8。
谢谢!
答案 0 :(得分:11)
法布里斯肯定是在正确的轨道上。获取默认的PhoneAccentBrush并更改它的颜色是可行的方法。
将此代码添加到App的构造函数的末尾,它将覆盖应用程序的WP8的Accent颜色:
Resources.Remove("PhoneAccentColor");
Resources.Add("PhoneAccentColor", Colors.Magenta);
((SolidColorBrush)Resources["PhoneAccentBrush"]).Color = Colors.Magenta;
当我们运行此代码并单击<Button />
时,您可以看到新的Accent颜色:
答案 1 :(得分:8)
如果您需要不同的画笔,请创建新画笔。无需替换现有的麻烦。有一天你可能想要使用那些内置的刷子。
我建议您只为您的应用添加新资源并引用它们。
<Application.Resources>
<SolidColorBrush x:Key="AppAccentBrush" Color="#012345"/>
</Application.Resources>
在您的网页中,像这样引用它
<TextBlock Text="Custom Accent" Style="{StaticResource PhoneTextNormalStyle}"
Foreground="{StaticResource AppAccentBrush}"/>
答案 2 :(得分:3)
我几天前看了一篇博文:
http://www.rudyhuyn.com/blog/2013/01/18/forcer-un-theme-sous-windows-phone-8/
这是法语但不要害怕。
有一个示例可以更改Windows Phone 8中的颜色(请查看方法DarkTheme())