#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.