在Windows Phone中,将用户输入的应用主题从黑暗变为浅,反之亦然

时间:2015-02-03 07:05:33

标签: windows windows-phone-8 windows-phone

我正在开发一个应用程序,在这里我需要为用户提供一个选项,可以在任何时间通过从暗到亮的设置更改应用程序的主题,反之亦然,并且可以随时切换主题。

如果有办法,请告诉我。

目前,该应用根据操作系统主题更改主题。如果用户在操作系统中选择了黑暗主题,则应用程序将具有黑暗主题,反之亦然。

要求不论操作系统主题用户应该能够在应用程序内部更改主题(例如在Google Mail / VLC播放器设置等中)。

请帮我实现这个目标。

2 个答案:

答案 0 :(得分:0)

如果您通过使用颜色,图标和画笔的全局资源键使用OS主题进行应用程序切换,则必须替换所有这些;据我所知,没有办法拦截。

要让应用程序在主题之间切换,您可以在主视图模型上定义一个可以从任何地方访问和绑定的属性。将您想要的所有颜色和资源放在ViewModel中并绑定到这些属性。接下来创建一些值转换器以将常规资源引用转换为主题资源引用。这将允许您通过逻辑名称指定颜色,并让转换器将其转换为主题感知颜色:

<Text Background="{Binding Path=UIResources.TextBackground, 
                           Converter={StaticResource ColorToThemedColor}}" />

答案 1 :(得分:0)

您可以将页面的RequestedTheme绑定到bool-Value。

然后编写一个值转换器,它返回Light或Dark的真/假,将其设置为Page-Resource。

最后你写了一个静态属性,通过导航来保存值。

在启动时初始化静态值,并且viewmodel的每个构造函数都获取设置页面上的isLight-Property的值

<Page RequestedTheme={Binding isLight,Converter={Staticresource TruetoLightConverter}>