讲述人中的错误阅读顺序

Posted

技术标签:

【中文标题】讲述人中的错误阅读顺序【英文标题】:Wrong reading order in Narrator 【发布时间】:2011-03-13 05:23:22 【问题描述】:

我在使用 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%,零”而不是预期的“我想多付 0%”。

我做错了吗?因此,叙述者本可以阅读整个文本。有没有办法解决这个问题而无需更改实际文本?

【问题讨论】:

【参考方案1】:

WPF 团队成员的回答:

WPF 支持文本控件,该控件可以将子控件与其文本混合。 UI 自动化树没有。无法向自动化客户端描述子编辑控件位于父文本中的位置。 WPF 无法轻松解决此问题 - 这是自动化架构的限制。

要解决此问题,可以将文本放入单独的控件中,以一种转化为自动化的方式描述顺序:

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

谢谢,Rob Relyea

WPF 团队

【讨论】:

非常感谢权威解答!【参考方案2】:

不要使用 narrator,它是一个非常基本的屏幕阅读程序,通常不被需要每天使用屏幕阅读器的人使用。有关要使用的屏幕阅读器的建议,请参阅以下问题。 Which screen reader would be best to test site accessibility and how to configure that?

【讨论】:

我自己不使用讲述人;但是我需要在我的代码中实现辅助功能,讲述人支持就是其中之一:-( 在这种情况下,我建议您与负责功能要求的人员交谈,并向他们解释叙述者的支持是不可持续的。如果您必须支持屏幕阅读器,我建议您从nvda-project.org 获得 NVDA,因为它是免费和开源的。 在大型商业公司工作,相当复杂。 PM 认为用户的系统上主要有讲述人,因此任务是明确支持讲述人。我想知道是否有关于辅助功能支持软件的使用统计信息(我会尝试在谷歌中找到它。)无论如何,谢谢你的建议!

以上是关于讲述人中的错误阅读顺序的主要内容,如果未能解决你的问题,请参考以下文章

如何在 discord.py 机器人中正确使用任务/事件循环?

如何防止 Windows 讲述人阅读 <title> 文本

论文泛读83NLP还不够-聊天机器人中用户输入的上下文化

顺序存储结构与链式存储结构

数据结构在游戏中的应用

数据结构在游戏中的简单应用