如何在FlowDocument中找到样式更改的位置

本文关键字:样式 位置 FlowDocument | 更新日期: 2023-09-27 18:15:46

我有一个FlowDocument实例从WPF RichTextBox。我必须找到所有的地方在FlowDocument的风格改变。

输入参数:

  • doc类型FlowDocument -用于分析的文档
  • beginPointendPoint类型TextPointer -从doc
  • 分析范围的开始和结束
返回数据:

  • TextPointer[]表示在doc中检测到样式变化的位置列表
用于分析的文本示例:"Welcome to the real world!"字体有四种变化:"Welcome"(普通)、"to"(粗体)、"the"(粗体斜体)、"real"(斜体)、"world!"(正常)

谢谢!

如何在FlowDocument中找到样式更改的位置

FlowDocument包含 block 的集合。每个Block可以是Paragraph类型。段落包含内联属性。每个样式的更改都是一个内联实例,该实例具有ContentBeginContentEnd

所以整个文档的最终代码应该如下所示:

public TextPointer[] ExtractStyleChanges(FlowDocument doc)
{
    var result = new List<TextPointer>();
    foreach(var p in FlowDocument.Blocks.OfType<Paragraph>())
        foreach(var i in p.Inlines)
        {
            result.Add(i.ContentBegin);
        }
    return result.ToArray();            
}

此方法可以使用BeginPoint和EndPoint标记进行升级。