Windows Phone 8更改重音和主题颜色

时间:2013-01-26 12:48:05

标签: c# xaml colors windows-phone-8 windows-phone

我正在为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;

我不知道为什么我无法更改PhoneBackgroundBrushPhoneAccentBrush,我尝试使用谷歌搜索解决方案,但他们只使用Windows Phone 7 SDK。教程here适用于WP 7但不是WP 8。

谢谢!

3 个答案:

答案 0 :(得分:11)

法布里斯肯定是在正确的轨道上。获取默认的PhoneAccentBrush并更改它的颜色是可行的方法。

将此代码添加到App的构造函数的末尾,它将覆盖应用程序的WP8的Accent颜色:

    Resources.Remove("PhoneAccentColor");
    Resources.Add("PhoneAccentColor", Colors.Magenta);
    ((SolidColorBrush)Resources["PhoneAccentBrush"]).Color = Colors.Magenta;

当我们运行此代码并单击<Button />时,您可以看到新的Accent颜色:

Clicked button with Magenta background

答案 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())