Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
471 views
in Technique[技术] by (71.8m points)

uwp - How to programatically check currently set theme in Windows Phone 8.1?

I want to check if the user has set a light or dark theme. Is it possible to do so programmatically in Windows Phone 8.1 (store app).

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Here at MSDN you will find sample codes, which you can use to determine the current theme - by comparing resources. For example:

private bool IsDarkTheme()
{ return (double)Application.Current.Resources["PhoneDarkThemeOpacity"] > 0; }

But - I've enocuntered some problems running the above line at WP8.1 Runtime - it couldn't find the requested key. As it turned out - the above code will work only on WP8.1 Silverlight (also WP8.0).

But (again), nothing stands on your way to define your own ThemeResource and check it's state:

In app.xaml - define some ThemeResources:

<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>

Then you can use for example a property in your code:

public bool IsDarkTheme { get { return (bool)Application.Current.Resources["IsDarkTheme"]; } }

Note also that in some cases you may need to check for HighContrast - according to MSDN, you can do it by checking AccessibilitySettings class or extend your own created ThemeResource by HighContrast values.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

1.4m articles

1.4m replys

5 comments

57.0k users

...