11

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

我不知道为什么我不能更改PhoneBackgroundBrushorPhoneAccentBrush并且我已经尝试过使用谷歌搜索解决方案,但是它们仅适用于 windows phone 7 SDK 。此处的教程适用于 WP 7,但不适用于 WP 8。

谢谢!

4

3 回答 3

11

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

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

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

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

带有洋红色背景的单击按钮

于 2013-01-26T23:58:45.240 回答
8

如果您想要不同的画笔,请创建新画笔。无需费心更换现有的。有一天你可能想要使用那些内置的画笔。

我建议只向您的应用程序添加新资源并参考这些资源。

<Application.Resources>
    <SolidColorBrush x:Key="AppAccentBrush" Color="#012345"/>
</Application.Resources>

在您的页面中,像这样引用它

<TextBlock Text="Custom Accent" Style="{StaticResource PhoneTextNormalStyle}"
           Foreground="{StaticResource AppAccentBrush}"/>
于 2013-01-27T01:56:04.730 回答
3

前几天看到一篇博文:

http://www.rudyhuyn.com/blog/2013/01/18/forcer-un-theme-sous-windows-phone-8/

这是法语,但不要害怕。

在 Windows Phone 8 中有一个更改颜色的示例(检查方法 DarkTheme())

于 2013-01-26T15:40:03.580 回答