UWP应用中Windows讲述人无法读取Webview与Textblock内容的解决咨询
UWP 无障碍:解决Windows讲述人无法读取WebView与TextBlock文本的问题
TextBlock 控件解决方案
- 确保
IsTabStop属性设为True,讲述人默认不会主动读取无法通过Tab键聚焦的元素;如果是长文本,将TextBlock嵌套在ScrollViewer内,方便讲述人滚动读取。 - 显式指定
AutomationProperties.Name,强制定义讲述人读取的内容,示例XAML:<TextBlock Text="订单详情" AutomationProperties.Name="您的订单编号:20240501001,状态:已完成"/> - 检查父控件的
AutomationProperties.AccessibilityView属性,若父元素设为Hidden会屏蔽子元素的无障碍信息,建议设为Raw。
WebView 控件解决方案
- 优先确保加载的网页符合无障碍标准:使用语义化HTML标签(
<h1>-<h6>、<p>、<article>等),避免用无意义的<div>堆砌文本;给重要内容添加aria-label或aria-labelledby属性。 - 在WebView加载完成后注入脚本强制开启无障碍支持,C#示例代码:
private async void WebView_NavigationCompleted(WebView sender, WebViewNavigationCompletedEventArgs args) { if (args.IsSuccess) { await sender.InvokeScriptAsync("eval", new[] { @" // 为所有文本元素补充无障碍属性 document.querySelectorAll('p, div, span').forEach(el => { if (!el.hasAttribute('role')) el.setAttribute('role', 'text'); const text = el.textContent.trim(); if (text && !el.hasAttribute('aria-label')) { el.setAttribute('aria-label', text); } }); " }); } } - 若加载本地HTML文件,直接在HTML代码中完善无障碍属性,比如给文本容器添加
role="region"并指定aria-label。 - 确认WebView的
IsEnabled为True,禁用状态下讲述人会忽略控件内的所有内容。
通用排查步骤
- 使用Accessibility Insights for Windows工具扫描应用,该工具会精准定位无障碍缺陷,比如缺失的自动化属性、不可聚焦的元素等。
- 确保应用目标版本至少为Windows 10 1809(Build 17763),微软在该版本后优化了WebView的无障碍支持。
内容的提问来源于stack exchange,提问作者MervelMath
相关产品推荐
相关产品推荐

