Подтвердить что ты не робот

Windows Phone 8 Изменить цвет акцента и темы

Я создаю приложение для Windows Phone 8, и я хотел бы изменить цвет темы независимо от темы, заданной пользователем в ОС телефона, так же, как это делают другие приложения (например, Skype).

Пока мне удалось изменить цвет фона, обратившись к элементу LayoutRoot в XAML:

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, и я попробовал решения для поиска в Google, но они работают только с Windows Phone 7 SDK. Учебное пособие здесь работает на WP 7, но не на WP 8.

Спасибо!

4b9b3361

Ответ 1

Фабрицио определенно на правильном пути. Получение стандартного PhoneAccentBrush и изменение его цвета - это путь.

Добавьте этот код в конец своего конструктора приложений и он переопределит цвет WP8 Accent для вашего приложения:

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

Когда мы запустим этот код и нажмите <Button />, вы увидите новый цвет Accent:

Clicked button with Magenta background

Ответ 2

Если вам нужны разные кисти, создайте новые кисти. Не нужно беспокоиться о замене существующих. Однажды вы можете захотеть использовать встроенные кисти.

Я бы предложил просто добавить новые ресурсы в ваше приложение и ссылаться на них.

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

На ваших страницах ссылайтесь на него как на

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