Изменить цвета для приложений с поддержкой тем для Windows Phone 7 - PullRequest
2 голосов
/ 11 июля 2011

Я хочу изменить цвет прямоугольника в зависимости от того, какую тему пользователь выбрал на своем телефоне.

EG. Если для пользователя задан светлый цвет темы устройства, прямоугольник должен быть синим, а когда тема - темным, он должен быть серым.

Есть идеи?

Спасибо

Ответы [ 2 ]

3 голосов
/ 11 июля 2011

Такого рода вещи смогут определить, на какую тему установлена ​​тема (темная или светлая).Возможно, вы захотите встроить его в свойство, к которому вы можете привязать свою кисть.

Visibility v = (Visibility)Resources["PhoneLightThemeVisibility"];
if (v == System.Windows.Visibility.Visible)
{
    // set your brush to blue
}
else
{
    // set your brush to grey
}

Вы также можете получить выбранный пользователем цвет акцента с помощью PhoneAccentBrush, если вам нужно учесть это какхорошо.

2 голосов
/ 11 июля 2011

Я написал собственную реализацию словаря ресурсов, которая выбирает другой словарь во время выполнения без снижения производительности и работает в конструкторе Visual Studio.Вы бы использовали его так:

<Application.Resources>
  <custom:ThemeResourceDictionary>
    <custom:ThemeResourceDictionary.LightResources>
      <ResourceDictionary Source="/ThemeManagement;component/Resources/Light.xaml" />
    </custom:ThemeResourceDictionary.LightResources>
    <custom:ThemeResourceDictionary.DarkResources>
      <ResourceDictionary Source="/ThemeManagement;component/Resources/Dark.xaml" />
    </custom:ThemeResourceDictionary.DarkResources>
  </custom:ThemeResourceDictionary>
</Application.Resources>

Где Light.xaml и Dark.xaml будут содержать ресурсы с одинаковыми именами.

Вы можете получить код и узнать больше о нем в моем блоге .

...