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访问的颜色)都会正确刷新,但应用程序仍然使用旧的主题词典(例如,当用户从深色切换到浅色时,为深色)。

如何中断主题更改并加载有效的主题词典?

Windows Phone,如何应对主题更改

当用户更改手机主题时,使用ThemeResource定义的资源应该自动更新。查看此处的备注部分:

http://msdn.microsoft.com/en-us/library/windows/apps/xaml/dn263118.aspx

具体而言:

"当应用程序首次启动时,由ThemeResource引用创建的任何资源引用都会根据启动时使用的主题进行评估。但如果用户随后在运行时更改了活动主题,系统将重新评估每个ThemeResource参考,检索可能不同的主题特定资源,并在视觉树。"

请确保将主题词典中的资源标记为ThemeResource,而不是StaticResource。