Как я могу заставить 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 пользовательского элемента управления, чтобы вернуть ноль.

Другие вопросы по тегам