2010-07-08 2 views
0

У меня проблема с Microsoft-рассказчиком.Неверный порядок чтения в рассказчике

У меня есть фрагмент 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% больше».

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

ответ

1

Не используйте рассказчик, это чрезвычайно простая программа для чтения экрана и обычно не используется людьми, которым необходимо ежедневно пользоваться программой чтения с экрана. См. Следующий вопрос о рекомендациях по использованию экранных программ. Which screen reader would be best to test site accessibility and how to configure that?

+0

Я не» я сам использую рассказчика; однако мне нужно реализовать функции доступности в моем коде, а поддержка повествователя - одна из них :-( – Vlad

+0

В этом случае я предлагаю вам поговорить с тем, кто когда-либо отвечает за требования к функциям, и объяснить им, что поддержка рассказчика не поддается. вам нужно поддерживать программу чтения с экрана. Я предлагаю NVDA с сайта http://www.nvda-project.org, так как это бесплатный и открытый исходный код. – Jared

+0

Работая в большой коммерческой компании, это довольно сложно. в основном, рассказчик на своих системах, поэтому задача состоит в том, чтобы поддерживать явный рассказчик. Интересно, есть ли где-то статистика использования программного обеспечения поддержки доступности (я попытаюсь найти его в Google.) В любом случае, спасибо за предложение! – Vlad

1

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

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

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

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

Thx, Роб Релайея

WPF Team

+0

Спасибо много для авторитетного ответа! – Vlad