Windows phone 8.1 如何以编程方式检查Windows Phone 8.1中当前设置的主题?

Windows phone 8.1 如何以编程方式检查Windows Phone 8.1中当前设置的主题?,windows-phone-8.1,uwp,Windows Phone 8.1,Uwp,我想检查用户是否设置了亮主题或暗主题。是否可以在Windows Phone 8.1(商店应用程序)中以编程方式执行此操作。在此处,您将找到示例代码,您可以通过比较资源来确定当前主题。例如: private bool IsDarkTheme() { return (double)Application.Current.Resources["PhoneDarkThemeOpacity"] > 0; } 但是-我在WP8.1运行时遇到了一些问题-它找不到请求的密钥。事实证明,上面的代码可以工作

我想检查用户是否设置了亮主题或暗主题。是否可以在Windows Phone 8.1(商店应用程序)中以编程方式执行此操作。

在此处,您将找到示例代码,您可以通过比较资源来确定当前主题。例如:

private bool IsDarkTheme()
{ return (double)Application.Current.Resources["PhoneDarkThemeOpacity"] > 0; }
但是-我在WP8.1运行时遇到了一些问题-它找不到请求的密钥。事实证明,上面的代码可以工作

但是(再一次),没有任何东西挡住你的路并检查它的状态:

在app.xaml中-定义一些主题资源:


还请注意,在某些情况下,您可能需要检查高对比度-根据,您可以通过检查或扩展自己创建的主题资源的高对比度值来执行此操作。

要检查哪个主题处于活动状态,可以使用应用程序对象的RequestedTheme属性

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.ThemeDictionaries>
            <ResourceDictionary x:Key="Light">
                <x:Boolean x:Key="IsDarkTheme">false</x:Boolean>
            </ResourceDictionary>
            <ResourceDictionary x:Key="Dark">
                <x:Boolean x:Key="IsDarkTheme">true</x:Boolean>
            </ResourceDictionary>
            <ResourceDictionary x:Key="Default">
                <x:Boolean x:Key="IsDarkTheme">false</x:Boolean>
            </ResourceDictionary>
        </ResourceDictionary.ThemeDictionaries>
    </ResourceDictionary>
</Application.Resources>
public bool IsDarkTheme { get { return (bool)Application.Current.Resources["IsDarkTheme"]; } }
var isDark = Application.Current.RequestedTheme == ApplicationTheme.Dark;