如何禁用 UWP 应用程序的高对比度模式

Posted

技术标签:

【中文标题】如何禁用 UWP 应用程序的高对比度模式【英文标题】:How to disable high contrast mode for UWP application 【发布时间】:2021-05-27 01:58:47 【问题描述】:

最近,我们的应用程序的一些用户开始抱怨它没有正确呈现。他们发送的视频显示所有颜色均已关闭,并且该应用程序中的视频已被隐藏。经过大量的排查,我们终于发现这些用户将他们的机器设置为高对比度显示模式,而我们的应用程序没有能力处理它。也就是说,编写一个全新的主题来处理高对比度模式是不可能的。这是一个太大的重构,无法在短期内完成。

我进行了一些研究,发现有一种方法至少可以检测何时应用高对比度模式。我们的应用是 javascript UWP,因此使用 WinRT 我们可以检查模式是否开启,如下所示:

const highContrastOn = Windows.UI.ViewManagement.AccessibilitySettings().highContrast;

我们还可以检查正在使用的主题并设置事件以对更改采取行动。

AccessibilitySettings 类的文档位于此处:

https://docs.microsoft.com/en-us/uwp/api/windows.ui.viewmanagement.accessibilitysettings?view=winrt-19041

但是,我无法弄清楚我们是否可以为我们的应用禁用这种渲染。我们从未想过必须为它建立支持,如果我们决定这样做,这将是一项重大任务。有没有什么方法可以使用 WinRT 或者一些浏览器的方法来通知系统我们不支持高对比度?

【问题讨论】:

【参考方案1】:

我们找到了一个解决方案,只需要少量的 CSS。

  body 
    -ms-high-contrast-adjust: none;
  

【讨论】:

以上是关于如何禁用 UWP 应用程序的高对比度模式的主要内容,如果未能解决你的问题,请参考以下文章

禁用 UWP 应用与 Tab 键的交互

UWP - Xbox One - JavaScript - 禁用 gamepadB 默认后退导航行为

在 Chrome 浏览器中检测高对比度扩展程序的使用

默认情况下如何以全屏模式启动 uwp webview 应用程序

如何在 UWP 应用程序中异步检测网络更改事件

如何更改颜色以调整 UWP 中的主题设置?