Как определить, когда тема изменилась в WP7? - PullRequest
6 голосов
/ 15 ноября 2011

Мое приложение полностью осведомлено о теме. Когда мое приложение деактивируется, и пользователь меняет тему с темной на светлую (скажем) и возвращается в мое приложение, тема не обновляется. Несмотря на то, что телефонная тема светлая, мое приложение остается темным.

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

Есть ли у вас решение?

1 Ответ

6 голосов
/ 15 ноября 2011

Добавьте этот код в конструктор главной страницы:

var v = (Visibility)Resources["PhoneLightThemeVisibility"];
Debug.WriteLine("Using " + (v == Visibility.Visible ? "light" : "dark") + " theme");

(Обнаруживает текущую тему и записывает в окно вывода, какая она есть.)

Затем запустите приложение, посмотрите на Вывод в Visual Studio, закройте приложение, измените тему, запустите приложение и посмотрите снова. Если в первый раз и во второй раз он говорит о разных вещах, значит, ваше приложение не настолько восприимчиво к темам, как вы думаете.

Редактировать: Кажется, что это не всегда работает из-за Ошибка манго . Тема остается прежней, когда вы возвращаетесь к приложению после изменения темы. Только когда пользователь перезапускает приложение из списка приложений, применяется новая тема.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...