WPF:如何让屏幕阅读器忽略进度条状态更新?

3
最近,我一直在尝试让内置的Windows 7语音朗读器/屏幕阅读器与我的WPF应用程序兼容。关于这个问题的信息非常少,但我所了解的是可以设置一个附加属性(AutomationProperties.HelpText,AutomationProperties.AutomationID)来实现兼容。
我遇到的问题是UI包含一个进度条,而屏幕阅读器会定期读取当前进度值并进行播报。在这种情况下,播报进度不是我们想要的结果,但我找不到关闭它的方法。我认为也许可以通过访问与元素相关联的自动化对等体来设置此功能,但事实并非如此(我可以强制引发事件,但无法忽略事件)。
有人知道如何解决这个问题吗?

你如何强制触发一个事件? - Alex Cube
我认为这将取决于您使用的屏幕阅读器,但您应该能够调用AutomationPeer.RaiseAutomationEvent函数(http://msdn.microsoft.com/en-us/library/system.windows.automation.peers.automationpeer.raiseautomationevent.aspx)。 - esc861
1个回答

2
这通常由屏幕阅读器本身通过用户设置/选项来控制,而不是应用程序级别可以做的。Narrator是Windows自带的一个相当基本的屏幕阅读器;将其视为记事本或Wordpad级别,而不是像Jaws或NVDA这样的屏幕阅读器,后者更像Word。Narrator选项很少,而其他两个屏幕阅读器可能有各种选项,用户可以用它们来自定义屏幕阅读器何时发出特定事件的语音提示。
因此,长话短说;在这里你无法做任何事情。确保事件被发送,这样屏幕阅读器可以选择读取它们或不读取它们,根据用户指示。
另外,请记住,Narrator是一种基本的屏幕阅读器,大多数用户实际上会使用类似Jaws(成本约为800美元)或NVDA(免费!),因此请考虑使用这些进行测试,以更接近真实的屏幕阅读器用户体验。

好的,我希望至少有一种方法可以“建议”屏幕阅读器忽略某些元素,但我将尝试使用NVDA进行测试,以更好地了解如何在更高级的屏幕阅读器中运行。谢谢! - esc861

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接