Перезагрузите ресурсы темы при возобновлении приложения

#c# #xaml #windows-runtime #windows-phone-8.1 #win-universal-app

#c# #xaml #windows-среда выполнения #windows-phone-8.1 #win-universal-app

Вопрос:

Я определил простой текстовый блок на своей главной странице:

 <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    <TextBlock Text="Example" FontSize="30" Foreground="{StaticResource PhoneForegroundBrush}"/>
</Grid>
  

Как вы можете видеть, я использую StaticREsource PhoneForegroundBrush . Это работает довольно хорошо:
введите описание изображения здесь

но возникает проблема, когда пользователь меняет тему телефона (светлая / темная), пока приложение приостановлено. Затем, когда пользователь возвращается в приложение, ресурсы не обновляются, поэтому мой текстовый блок выглядит так:

введите описание изображения здесь

Когда я закрываю приложение и запускаю его снова, все в порядке:

введите описание изображения здесь

Есть ли метод, который я могу включить в событие возобновления, который обновил бы ресурсы, чтобы мои UIElements были видны?

Ответ №1:

Используйте ThemeResource, он извлекает значение в зависимости от текущей активной темы.

 <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    <TextBlock Text="Example" FontSize="30" Foreground="{ThemeResource PhoneForegroundBrush}"/>
</Grid>
  

Расширение разметки XAML ThemeResource предоставляет значение для любого
атрибута XAML путем вычисления ссылки на ресурс с дополнительной
системной логикой, которая извлекает различные ресурсы в зависимости от
текущей активной темы. Подобно StaticResource, ресурсы
определяются в ResourceDictionary, а использование ThemeResource ссылается
на ключ этого ресурса в ResourceDictionary.

Расширение разметки источника темы