我在尝试同时支持键盘和讲述人辅助功能时遇到了一个奇怪的问题。
在以下 XAML 代码中:
<StackPanel>
<CheckBox Name="CheckBox"
AutomationProperties.Name="{Binding RelativeSource={RelativeSource Self}, Path=Content.(AccessText.Text)}">
<AccessText >C_heck me</AccessText>
</CheckBox>
</StackPanel>
默认的 Windows 10 讲述人显示为"C underscore heck me CheckBox unchecked
"。
有没有办法保持键盘导航并从讲述人那里获取读数作为"Check me checkbox unchecked
"?
请注意,上面的代码是一个示例,我有很多发生类似问题的地方。我已经尝试添加一个转换器并将其与 AutomationProperties.Name 一起使用,但它导致应用程序运行缓慢。
你使用你自己的(比如(AccessTextToAutomationPropertiesNameConverter((去掉下划线的方法,对于某些应用程序来说将是一种有吸引力的方式。执行此操作时,对应用的性能有何影响(以及必须通过转换器运行多少控件(?您的转换器是否具有一次性模式?另一种选择是为 AutomationProperties.Name 和 AccessText 提供单独的本地化字符串,但我可以看到这是多么没有吸引力,因为它会增加本地化成本。