Windows Phone,如何应对主题更改
本文关键字:何应 Phone Windows | 更新日期: 2023-09-27 18:25:03
我正在使用主题资源:
<Page.Resources>
<ResourceDictionary>
<ResourceDictionary.ThemeDictionaries>
<ResourceDictionary x:Key="Dark" Source="../Styles/Main/Dark.xaml" />
<ResourceDictionary x:Key="Light" Source="../Styles/Main/Light.xaml" />
</ResourceDictionary.ThemeDictionaries>
</ResourceDictionary>
</Page.Resources>
此解决方案通常有效,但前提是在启动应用程序之前选择了主题。若用户在应用程序运行时更改了主题,则所有主题颜色(可通过StaticResource访问的颜色)都会正确刷新,但应用程序仍然使用旧的主题词典(例如,当用户从深色切换到浅色时,为深色)。
如何中断主题更改并加载有效的主题词典?
当用户更改手机主题时,使用ThemeResource定义的资源应该自动更新。查看此处的备注部分:
http://msdn.microsoft.com/en-us/library/windows/apps/xaml/dn263118.aspx
具体而言:
"当应用程序首次启动时,由ThemeResource引用创建的任何资源引用都会根据启动时使用的主题进行评估。但如果用户随后在运行时更改了活动主题,系统将重新评估每个ThemeResource参考,检索可能不同的主题特定资源,并在视觉树。"
请确保将主题词典中的资源标记为ThemeResource,而不是StaticResource。