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;
我不知道为什么我不能更改PhoneBackgroundBrush
或PhoneAccentBrush
,我尝试了谷歌搜索解决方案,但它们只适用于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 主题的情况下更改颜色。可能的?