Приложение платформы Uno реагирует на изменение темы Android

#uno-platform

Вопрос:

Хотя по большей части приложения платформы Uno способны внутренне обрабатывать изменения темы, у меня в приложении есть собственный код, который должен реагировать на изменение темы. Например, когда пользователь меняет тему со светлой на темную здесь:

Настройки дисплея Android для темы

В моем коде я могу изначально получить значение темы следующим образом:

 var color = (Color)App.Current.Resources["SystemBaseHighColor"]
 

Теперь, когда пользователь меняет тему и возвращается в приложение, я хочу обнаружить это и программно обновить какой-либо компонент. Есть ли событие, к которому я могу подключиться для этого?

Ответ №1:

Вы можете отслеживать изменения темы на всех платформах, используя ThemeListener вспомогательный класс из набора инструментов сообщества Windows. Он поддерживается последними версиями платформы Uno.

Просто создайте новый экземпляр ThemeListener и подпишитесь на ThemeListener.ThemeChanged мероприятие.