WPF:如何防止讲述人阅读 AccessText 元素的下划线字符?
WPF: How to prevent reading underscore character of the AccessText element by Narrator?
我在尝试同时支持键盘和讲述人辅助功能时遇到了一个奇怪的问题。
在下面的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() 去除下划线的方法对于某些应用程序来说是一种很有吸引力的方法。当您这样做时,您的应用程序的性能影响是什么(以及有多少控件必须 运行 通过转换器)?您的转换器是否具有 OneTime 模式?另一种选择是为 AutomationProperties.Name 和 AccessText 使用单独的本地化字符串,但我认为这没有吸引力,因为它会增加本地化成本。
我在尝试同时支持键盘和讲述人辅助功能时遇到了一个奇怪的问题。
在下面的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() 去除下划线的方法对于某些应用程序来说是一种很有吸引力的方法。当您这样做时,您的应用程序的性能影响是什么(以及有多少控件必须 运行 通过转换器)?您的转换器是否具有 OneTime 模式?另一种选择是为 AutomationProperties.Name 和 AccessText 使用单独的本地化字符串,但我认为这没有吸引力,因为它会增加本地化成本。