You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何创建带图标且支持文本换行的HyperlinkButton并解决无障碍测试问题

解决HyperlinkButton中图标私有Unicode字符的无障碍测试问题

你遇到的问题根源在于:属于Unicode**私有使用区域(PUA)**的字符,无障碍测试工具会识别这类字符为无效语义内容,从而触发"Name属性包含私有Unicode范围字符"的错误。以下是两种可行的解决方法:

方案一:用FontIcon替代Run元素(推荐)

FontIcon是UWP/WinUI专门为字体图标设计的控件,它不会将图标字符暴露给无障碍自动化系统,同时自带完善的无障碍支持。修改后的代码如下:

<HyperlinkButton Command="{Binding xyz}"
                 Padding="0"
                 x:Uid="xyzLink">
    <StackPanel Orientation="Horizontal" VerticalAlignment="Center">
        <TextBlock TextWrapping="Wrap"
                   FontWeight="Normal"
                   x:Uid="abc"
                   FontSize="14"/>
        <FontIcon Glyph="&#xE8A7;"
                  FontSize="12"
                  FontFamily="Segoe Fluent Icons"
                  AutomationProperties.AccessibilityView="Raw"
                  Margin="4,0,0,0"/> <!-- 增加间距优化视觉布局 -->
    </StackPanel>
</HyperlinkButton>

方案二:清空图标的自动化名称(快速修复)

如果不想调整布局结构,可以直接给包含私有字符的Run设置AutomationProperties.Name="",让无障碍工具忽略这个图标的字符内容:

<HyperlinkButton Command="{Binding xyz}"
                 Padding="0"
                 x:Uid="xyzLink">
    <TextBlock TextWrapping="Wrap"
               FontWeight="Normal">
        <Run x:Uid="abc"
             FontSize="14" />
        <Run Text="&#xE8A7;"
             FontSize="12"
             FontFamily="Segoe Fluent Icons"
             AutomationProperties.AccessibilityView="Raw"
             AutomationProperties.Name=""/> <!-- 清空自动化名称,避免无障碍工具读取私有字符 -->
    </TextBlock>
</HyperlinkButton>

注意:优先选择方案一,因为FontIcon更符合平台设计规范,能从根源上避免类似的无障碍问题,同时布局也更灵活可控。

内容的提问来源于stack exchange,提问作者AkritiCodes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 00:05:02