Как я могу заставить JAWS читать содержимое UserControl так же, как это делает Window?
JAWS (программа чтения с экрана) обрабатывает содержимое пользовательского элемента управления WPF иначе, чем содержимое окна. Когда пользователь в первый раз переключается на фокусируемый элемент в пользовательском элементе управления, JAWS считывает все содержимое пользовательского элемента управления вместо только сфокусированного элемента. В окне, когда пользователь вкладывает элемент управления, JAWS читает только сфокусированный элемент управления. Как я могу заставить пользовательский элемент управления вести себя как окно?
Рассмотрим следующий XAML (пространства имен / объявления конструктора для краткости опущены):
<Window ... Title="MainWindow">
<StackPanel>
<Label>First label</Label>
<Button>A button</Button>
<Label>Second label</Label>
<CheckBox>A checkbox</CheckBox>
</StackPanel>
</Window>
Когда вышеупомянутое приложение WPF запущено, JAWS читает "Главное окно". Если пользователь нажимает клавишу Tab, первая кнопка фокусируется, и JAWS читает "Кнопка кнопки Tab A, чтобы активировать нажатие клавиши пробела". Это ожидается.
Теперь рассмотрим вышеупомянутые элементы управления, включенные в пользовательский элемент управления:
<UserControl ...>
<StackPanel>
<Label>First label</Label>
<Button>A button</Button>
<Label>Second label</Label>
<CheckBox>A checkbox</CheckBox>
</StackPanel>
</UserControl>
а затем пользовательский элемент управления помещается на MainWindow
заменить другие элементы управления:
<Window ... Title="MainWindow">
<uc:FirstUserControl/>
</Window>
Теперь, когда приложение запускается, JAWS читает то же самое ("Главное окно"), но когда пользователь нажимает клавишу Tab, JAWS читает: "Tab Первая метка Вторая метка A Кнопка для активации клавиши пробела". Если пользователь снова нажимает клавишу Tab, флажок получает фокус, но JAWS не перечитывает все - он только читает метку флажка, как и ожидалось. Нажатие клавиши Tab в третий раз вернется к кнопке, и на этот раз JAWS читает только текст выделенной кнопки. Кажется, что только чтение всего содержимого пользовательского элемента управления происходит только при первом обращении к дочернему элементу управления.
Как я могу заставить содержимое пользовательских элементов управления вести себя так же, как элементы управления в обычном окне? (То есть я хочу, чтобы JAWS читал только сфокусированный контент, если только пользователь не скажет ему прочитать все на странице).
0 ответов
Вы можете установить AutomationProperties.Name=" " в пользовательском контроле. Вы также можете переопределить метод OnCreateAutomationPeer пользовательского элемента управления, чтобы вернуть ноль.