强制UWP应用程序使用默认主题

时间:2016-03-03 05:52:48

标签: themes win-universal-app high-contrast

对于我们应用的当前版本,我们不支持高对比度模式。高对比度(具有正确设计的UI等)的支持是我们将在随后的发布/更新中添加到我们的应用程序中。

即使用户将设备置于高对比度模式,是否有一种简单的方法可以强制UWP应用使用默认主题?

在我的app.xaml中,我定义了以下内容:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <ResourceDictionary.ThemeDictionaries>
        <ResourceDictionary x:Key="HighContrast">
           copy/pasted styles into here
        </ResourceDictionary>
    </ResourceDictionary.ThemeDictionaries>
</ResourceDictionary>

但是将<ResourceDictionary x:Key="Default">的内容从C:\Program Files (x86)\Windows Kits\10\DesignTime\CommonConfiguration\Neutral\UAP\10.0.10586.0\Generic\themeresources.xaml复制到我的应用的HighContrast主题词典中,认为即使设备进入HighContrast模式,这也会迫使应用仍然使用默认主题,但是没有效果。

任何人都知道是否有办法强制该应用使用默认主题?

1 个答案:

答案 0 :(得分:0)

官方说,答案是否定的。你的方法是一种破解方式。

  

UWP应用默认支持高对比度主题。如果用户选择他们希望系统使用系统设置或辅助功能工具中的高对比度主题,则框架会自动使用颜色和样式设置,为UI中的控件和组件生成高对比度布局和渲染。 / p>

有关详情,请参阅High-contrast themes

如您所知,设置RequestedTheme无法在高对比度模式下工作。您已将<ResourceDictionary x:Key="Default">的内容复制到app.xaml。你说它没有效果。原因在于Default的内容,某些属性使用这样的颜色:Color="{StaticResource SystemChromeBlackHighColor}"。此颜色基于用户选择的主题。

当用户选择高对比度主题时,系统将强制所有应用程序适应高对比度主题。如果您的应用是唯一不使用高对比度颜色的应用,那么您的应用将无法适应其他应用。