我有一个带有ContentTextBlock
的文本块(AutomationProperties.LiveSettings="Assertive"
)。我只是测试并检查此功能的实用性。而且...到目前为止很失望。
private void Button_Click(object sender, RoutedEventArgs e)
{
ContentTextBlock.Text += " test";
var peer = UIElementAutomationPeer.FromElement(ContentTextBlock);
if(peer == null)
{
peer = UIElementAutomationPeer.CreatePeerForElement(ContentTextBlock);
peer.RaiseAutomationEvent(AutomationEvents.LiveRegionChanged);
}
peer.RaiseAutomationEvent(AutomationEvents.LiveRegionChanged);
}
使用“讲述人”时,此功能与广告中所宣传的一样。每当单击按钮时,讲述人都会宣布TextBlock文本(“测试”“测试测试”“测试测试测试”)...但是,当我使用NVDA或JAWS时,虽然屏幕阅读器版本是相对最新的,但没有任何反应。他们真的没有为直播区域添加任何支持吗?还是我只是想念一个重点?
答案 0 :(得分:0)
虽然我没有设法让实时区域正常工作,但我发现了另一个解决方法:
Tolk是一个可以在其他人中使用的库
要在您的C#项目中包含Tolk,请从上面的链接下载Tolk,然后在项目中包含tolk.cs
(来自src/dotnet
),然后放置tolk.dll
(在{{ 1}})包含在您的可执行文件所在的文件夹中(或PATH变量中的某个位置)。确保dll版本与您的CPU目标(x86 / x64)匹配。对lib目录中的dll执行相同的操作。然后,您可以根据示例文件夹中的代码使用它。
PS。 Tolk也可以在Win 7上工作,所以这是一个奖励。仅从Win 8开始才支持WPF的实时区域。