Как я могу запретить программе чтения с экрана/рассказчику читать элементы управления, скрытые в WPF?

У меня есть приложение WPF, которое должно поддерживать специальные возможности. У меня есть TextBlock, для которого при определенных условиях видимость установлена ​​на Collapsed.

Экранный диктор Windows 7, а также программа чтения с экрана NVDA сообщают о TextBlock, даже если для параметра «Видимость» установлено значение «Свернуто».

Что мне нужно сделать, чтобы предотвратить его чтение?


person Elan    schedule 20.02.2012    source источник
comment
Вы когда-нибудь находили решение?   -  person The Muffin Man    schedule 02.11.2017
comment
Я скрываю их с помощью одноранговых классов автоматизации thinkrethink.net/2019. /02/11/   -  person Peter    schedule 12.02.2019


Ответы (3)


Вы пытались их отключить? Прошло довольно много времени с тех пор, как я в последний раз работал над доступностью WPF :-(

person Riccardo Trocca    schedule 11.04.2012

Из MSDN:

В версиях .NET до 4.8 ожидается, что когда кнопка скрыта или свернута, пользовательский интерфейс кнопки по-прежнему отображается через представление управления дерева UIA в виде элемента Button и дочернего элемента Text. Таким образом, средство чтения с экрана может перейти к обоим этим элементам, несмотря на то, что кнопка не имеет визуального представления. В .NET версии 4.8, когда кнопка скрыта или свернута, связанные элементы Button и Text удаляются из представления Control дерева UIA. Подумайте, целесообразно ли для вашего приложения использовать это улучшение, доступное в .NET версии 4.8.

Чтобы использовать исправление, представленное в .NET 4.8, либо перестройте свое приложение до целевой версии 4.8 или более поздней, либо обновите файл конфигурации вашего приложения, чтобы приложение использовало улучшение, если версия .NET с улучшением установлена ​​на устройстве, где приложение запущено, даже если ваше приложение не было перестроено специально для этой версии .NET.

Чтобы узнать больше о том, как настроить ваше приложение для использования исправления, связанного с доступностью, доступного в определенной версии .NET, даже если ваше приложение не было перестроено для этой версии .NET, посетите Переключатели специальных возможностей.

person Emond Erno    schedule 31.07.2020

Добавьте атрибут aria-hidden="true" к вашему элементу. aria-hidden указывает, что элемент и все его потомки не видны и не воспринимаются любым пользователем, как реализовано автором.

Вам нужно будет удалить этот атрибут (или установить для него значение false), когда ваш контент станет видимым.

Пару лет назад поддержка AT была неравномерной, но сейчас она на 100%, см. таблицу здесь: http://terrillthompson.com/tests/hiddencontent.html

person Chris Hore    schedule 28.07.2015
comment
Это хороший совет, но он применим только к html-приложениям. Первоначальный вопрос был о приложении WPF. - person slugolicious; 29.07.2015