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

UWP中如何使用TextHighlighter高亮RichTextBlock文本?

在UWP的RichTextBlock中使用TextHighlighter实现文本高亮

你已经完成了大部分工作,只差最后两步就能实现高亮效果啦!核心就是把你定义好的文本范围关联到TextHighlighter,再把它添加到RichTextBlock的高亮集合里。

修改后的完整C#代码

private void btnToFind_Click(object sender, RoutedEventArgs e) {
    TextRange textRange = new TextRange() { StartIndex = 3, Length = 5 };
    List<TextRange> rangelist = new List<TextRange>();
    rangelist.Add(textRange);

    TextHighlighter evidenziatore = new TextHighlighter() { 
        Background = new SolidColorBrush(Colors.Yellow),
        Ranges = rangelist // 关键:让高亮器知道要处理哪些文本范围
    };

    // 可选:清空之前的高亮,避免多次点击后叠加多个高亮层
    RichFullText.TextHighlighters.Clear();
    // 将高亮器添加到RichTextBlock的高亮集合中,完成应用
    RichFullText.TextHighlighters.Add(evidenziatore);
}

关键说明

  • 必须设置TextHighlighter的Ranges属性:你之前创建了文本范围列表,但没把它和高亮器关联起来,高亮器根本不知道要高亮哪里,这是最核心的遗漏点。
  • 利用RichTextBlock的TextHighlighters集合:这个集合可以容纳多个TextHighlighter对象,如果你需要不同样式的高亮(比如不同颜色),可以创建多个高亮器添加进去。
  • 清空旧高亮(可选):如果用户多次点击"Find"按钮,不清空的话会叠加多个高亮层,所以调用Clear()可以保证每次只显示最新的高亮结果。

如果之后你想实现根据TextBox输入动态查找并高亮文本,可以通过解析RichTextBlock的内容,找到匹配字符串的起始索引和长度来生成TextRange,不过这是进阶功能,当前先解决你遇到的核心问题就够啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:33:05