Vit*_*lij 6 windows-phone-8.1 uwp
我想检查用户是否设置了浅色或深色主题.是否可以在Windows Phone 8.1(商店应用程序)中以编程方式执行此操作.
在MSDN中,您将找到示例代码,您可以使用它们来确定当前主题 - 通过比较资源.例如:
private bool IsDarkTheme()
{ return (double)Application.Current.Resources["PhoneDarkThemeOpacity"] > 0; }
Run Code Online (Sandbox Code Playgroud)
但是 - 我在WP8.1运行时遇到了运行上述行的一些问题 - 它无法找到所请求的密钥.事实证明 - 上面的代码只适用于WP8.1 Silverlight(也是WP8.0).
但是(再次),没有什么能够定义你自己的ThemeResource并检查它的状态:
在app.xaml中 - 定义一些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>
Run Code Online (Sandbox Code Playgroud)
然后,您可以在代码中使用例如属性:
public bool IsDarkTheme { get { return (bool)Application.Current.Resources["IsDarkTheme"]; } }
Run Code Online (Sandbox Code Playgroud)
另请注意,在某些情况下,您可能需要检查HighContrast - 根据MSDN,您可以通过检查AccessibilitySettings类或通过HighContrast值扩展您自己创建的ThemeResource来实现.
要检查哪个主题处于活动状态,您可以使用 Application 对象MSDN 的RequestedTheme 属性
var isDark = Application.Current.RequestedTheme == ApplicationTheme.Dark;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2248 次 |
| 最近记录: |