Неправильный порядок чтения в экранном дикторе

У меня проблема с Microsoft Narrator.

У меня есть такой фрагмент WPF:

<Window
    x:Class="InlineEditbox.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Narrator test" SizeToContent="WidthAndHeight">
    <TextBlock>
        <Run xml:space="preserve">I want to pay </Run>
        <InlineUIContainer>
            <TextBox Width="70" HorizontalContentAlignment="Right">0</TextBox>
        </InlineUIContainer>
        <Run xml:space="preserve"> % more</Run>
    </TextBlock>
</Window>

Текст отображается корректно; однако Рассказчик читает это так: «Я хочу платить на процент больше, ноль» вместо ожидаемого «Я хочу платить на 0 процентов больше».

Я делаю что-то неправильно? Рассказчик мог бы прочитать весь текст последовательно. Есть ли способ обойти проблему без необходимости изменения фактического текста?


person Vlad    schedule 08.07.2010    source источник


Ответы (2)


Ответ от члена команды WPF:

WPF поддерживает текстовый элемент управления, который может иметь дочерние элементы управления, смешанные с его текстом. В дереве автоматизации пользовательского интерфейса этого нет. Невозможно описать клиентам автоматизации, где дочерний элемент управления редактированием находится в родительском тексте. WPF не может легко это исправить — это ограничение архитектуры автоматизации.

В качестве обходного пути можно поместить текст в отдельные элементы управления, чтобы описать порядок таким образом, чтобы это соответствовало автоматизации:

<TextBlock>I want to pay</TextBlock>
<TextBox> 0 </TextBox>
<TextBlock>% more</TextBlock>

Спасибо, Роб Рельеа

Команда WPF

person Rob Relyea    schedule 17.11.2015
comment
Большое спасибо за авторитетный ответ! - person Vlad; 18.11.2015

Не используйте экранный диктор, это чрезвычайно простая программа для чтения с экрана, и обычно ею не пользуются люди, которым необходимо ежедневно пользоваться программой для чтения с экрана. В следующем вопросе приведены рекомендации по использованию программ чтения с экрана. Какое средство чтения с экрана будет лучше всего проверить доступность сайта и как это настроить?

person Jared    schedule 09.07.2010
comment
Я сам не пользуюсь рассказчиком; однако мне нужно реализовать специальные возможности в моем коде, поддержка экранного диктора является одной из них :-( - person Vlad; 09.07.2010
comment
В этом случае я бы посоветовал вам поговорить с теми, кто когда-либо отвечал за требования к функциям, и объяснить им, что поддержка рассказчика не является дублируемой. Если вам нужно поддерживать программу чтения с экрана, я бы посоветовал NVDA с сайта nvda-project.org, поскольку она бесплатна. и с открытым исходным кодом. - person Jared; 12.07.2010
comment
Работать в крупной коммерческой компании довольно сложно. Менеджеры проектов считают, что у пользователей в основном есть экранный диктор в их системах, поэтому задача состоит в том, чтобы явно поддерживать экранный диктор. Интересно, есть ли где-нибудь статистика использования ПО для поддержки специальных возможностей (попробую найти в гугле). В любом случае, спасибо за предложение! - person Vlad; 14.07.2010