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

Posted

技术标签:

【中文标题】Windows Phone 8 更改口音和主题颜色【英文标题】:Windows Phone 8 Change Accent and Theme Colour 【发布时间】:2013-01-10 07:37:50 【问题描述】:

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

谢谢!

【问题讨论】:

【参考方案1】:

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

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

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

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

【讨论】:

我试过这个,在App.xaml.cs文件的顶部添加using System.Windows.Media;,然后在InitializeLanguage();之后添加你的代码到App(),但是没有效果。我也把它放在构造函数的开头,但没有区别。 这似乎适用于某些元素(例如按钮和文本样式),但不适用于其他元素。 ApplicationBar、MessageBox 和 CheckBox 不会选择这种颜色变化。也许有另一种样式需要覆盖,或者其中一些项目可能无法以相同的方式设置样式。 ApplicationBar、SystemTray、MessageBox 和其他一些是与 XAML 样式无关的 shell UI。所以他们不会受到这种变化的影响。其中一些公开了特定的 API 来配置其 UI,而另一些则没有。【参考方案2】:

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

我建议只向您的应用添加新资源并引用这些资源。

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

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

<TextBlock Text="Custom Accent" Style="StaticResource PhoneTextNormalStyle"
           Foreground="StaticResource AppAccentBrush"/>

【讨论】:

我对 Windows Phone 环境还很陌生,所以请原谅我,但是您的第一个代码 sn-p 应该放在 XAML 文件的哪个位置?我收到错误The attachable property 'Resources' was not found in type 'Application'【参考方案3】:

前几天看到一篇博文:

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

这是法语,但不要害怕。

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

【讨论】:

感谢您的帮助 :)。我尝试使用 DarkTheme 方法,但没有任何反应。我在InitializePhoneApplication(); 之后在App.xaml.cs 中调用DarkTheme(); 两种方法都试过了吗?第二个叫 DarkTheme,但颜色不一样。 我的 Huyn 方法没有改变背景,但包括来自ThemeManager 的单个文件效果很好。

以上是关于Windows Phone 8 更改口音和主题颜色的主要内容,如果未能解决你的问题,请参考以下文章

windows phone silverlight 8 app 系统托盘颜色变化

如何在 Windows Phone 中更改 RadioButton 的按下状态

如何更改 windows phone 应用程序中按钮的背景颜色?

windows phone 8开发,xmal文件代码 不显示高亮颜色,这个问题怎么解决

Eclipse 的包资源管理器背景颜色遵循 windows 主题。我想在不更改 Windows 主题的情况下更改颜色。可能的?

如何在 Windows Phone 8 中更改数据透视表头模板