我正在使用主题资源:
<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访问的颜色)都会正确刷新,但应用程序仍使用旧主题词典(例如,Dark,当用户从Dark切换到Light时)。
如何中断主题更改并加载有效的主题词典?
答案 0 :(得分:1)
当用户更改手机主题时,使用ThemeResource定义的资源应自动更新。看看这里的备注部分:
http://msdn.microsoft.com/en-us/library/windows/apps/xaml/dn263118.aspx
具体做法是:
&#34;当应用程序首次启动时,将根据启动时使用的主题评估ThemeResource引用所做的任何资源引用。但是,如果用户随后在运行时更改活动主题,系统将重新评估每个ThemeResource引用,检索可能不同的主题特定资源,并在视觉中的所有适当位置使用新资源值重新显示应用程序。 。树&#34;
确保将主题词典中的资源标记为ThemeResource而不是StaticResource。