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

Seb*_*123 11 c# xaml colors windows-phone windows-phone-8

我正在创建一个Windows Phone 8应用程序,我想改变主题颜色,而不管用户在手机操作系统中设置的主题,就像其他应用程序这样做(例如Skype).

到目前为止,我只是通过访问XAML中的LayoutRoot元素来设法更改背景颜色:

this.LayoutRoot.Background = new SolidColorBrush(Colors.White);
Run Code Online (Sandbox Code Playgroud)

和前景色:

(App.Current.Resources["PhoneForegroundBrush"] as SolidColorBrush).Color = Colors.Green;
Run Code Online (Sandbox Code Playgroud)

但是,以下内容在Windows Phone 8上不起作用:

(App.Current.Resources["PhoneBackgroundBrush"] as SolidColorBrush).Color = Colors.White;
(App.Current.Resources["PhoneAccentBrush"] as SolidColorBrush).Color = Colors.Yellow;
Run Code Online (Sandbox Code Playgroud)

我不知道为什么我不能改变PhoneBackgroundBrush或者PhoneAccentBrush我已经尝试了谷歌搜索解决方案,但他们只使用Windows Phone 7 SDK.这里的教程适用于WP 7但不适用于WP 8.

谢谢!

Jus*_*gel 11

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

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

    Resources.Remove("PhoneAccentColor");
    Resources.Add("PhoneAccentColor", Colors.Magenta);
    ((SolidColorBrush)Resources["PhoneAccentBrush"]).Color = Colors.Magenta;
Run Code Online (Sandbox Code Playgroud)

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

点击按钮与洋红色背景

  • 我尝试了这个,在`app.xaml.cs`文件的顶部添加`using System.Windows.Media;`,然后在`InitializeLanguage();`之后将代码添加到`App()`,但是没有效果.我也把它放在构造函数的开头,但没有区别. (3认同)

Sha*_*rot 8

如果需要不同的画笔,则创建新画笔.无需替换现有的麻烦.有一天你可能想要使用那些内置的刷子.

我建议您只为您的应用添加新资源并引用它们.

<Application.Resources>
    <SolidColorBrush x:Key="AppAccentBrush" Color="#012345"/>
</Application.Resources>
Run Code Online (Sandbox Code Playgroud)

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

<TextBlock Text="Custom Accent" Style="{StaticResource PhoneTextNormalStyle}"
           Foreground="{StaticResource AppAccentBrush}"/>
Run Code Online (Sandbox Code Playgroud)


Fab*_*ice 3

前几天看到一篇博文:

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

虽然是法语,但不要害怕。

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