如何防止屏幕阅读器/旁白阅读隐藏在 WPF 中的控件?

Posted

技术标签:

【中文标题】如何防止屏幕阅读器/旁白阅读隐藏在 WPF 中的控件?【英文标题】:How can I prevent a screen reader/narrator from reading controls that are hidden in WPF? 【发布时间】:2012-03-11 07:46:55 【问题描述】:

我有一个 WPF 应用程序,它需要支持可访问性。我有一个 TextBlock,它在某些条件下将其 Visibility 设置为 Collapsed。

Windows 7 旁白和NVDA 屏幕阅读器都会宣布 TextBlock,即使可见性设置为折叠。

我需要做些什么来防止它被读取?

【问题讨论】:

您找到解决方案了吗? 我使用自动化对等类隐藏它们thinkrethink.net/2019/02/11/… 【参考方案1】:

您是否尝试禁用它们? 自从我上次研究 WPF 可访问性以来已经有一段时间了:-(

【讨论】:

【参考方案2】:

来自MSDN:

在 4.8 之前的 .NET 版本中,预计当 Button 被隐藏或折叠,Button UI 继续暴露 通过 UIA 树的 Control 视图,作为一个 Button 元素和一个 子文本元素。因此,屏幕阅读器可以导航到两者 这些元素,尽管 Button 没有视觉表示。在 .NET 4.8 版,当按钮被隐藏或折叠时,关联的 Button 元素和 Text 元素从 Control 视图中移除 UIA 树。请考虑您的应用是否实用 利用 .NET 4.8 版中提供的这一改进。

要利用 .NET 4.8 引入的修复,请重新构建您的应用 以 4.8 或更高版本为目标,或更新应用程序的配置文件,例如 如果 .NET 版本与 改进安装在运行应用程序的设备上,甚至 如果您的应用尚未重新构建以专门针对该版本 .NET 的。

要详细了解如何配置您的应用以利用 特定版本的 .NET 中提供与可访问性相关的修复, 即使您的应用尚未针对该版本重新构建 .NET,请访问Accessibility switches。

【讨论】:

【参考方案3】:

将 aria-hidden="true" 属性添加到您的元素。 aria-hidden 表示该元素及其所有后代对于作者所实现的任何用户都是不可见或不可感知的。

当您的内容可见时,您需要移除此属性(或将其设置为 false)。

几年前 AT 支持参差不齐,但现在是 100%,请参阅此处的表格:http://terrillthompson.com/tests/hiddencontent.html

【讨论】:

这是个好建议,但仅适用于 html 应用程序。最初的问题是关于 WPF 应用程序的。

以上是关于如何防止屏幕阅读器/旁白阅读隐藏在 WPF 中的控件?的主要内容,如果未能解决你的问题,请参考以下文章

屏幕阅读器 WPF 组样式

如何从屏幕阅读器中隐藏“显示更多”按钮?

如何让屏幕阅读器读取文档加载和文档加载?

如何可访问地隐藏表格标题元素?

将旁白限制为活动视图控制器

为旁白选择视图中的第一个元素