0

对于我们应用程序的当前版本,我们不支持高对比度模式。对高对比度的支持(使用正确设计的 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">但是将from的内容复制C:\Program Files (x86)\Windows Kits\10\DesignTime\CommonConfiguration\Neutral\UAP\10.0.10586.0\Generic\themeresources.xaml到我的应用程序的 HighContrast 主题字典中,认为即使设备进入 HighContrast 模式,这也会强制应用程序仍然使用默认主题,但这没有效果。

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

4

1 回答 1

0

官方给出的答案是否定的。你的方法是一种黑客方式。

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

有关更多信息,请参阅高对比度主题

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

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

于 2016-03-09T10:16:32.367 回答