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

时间:2013-05-28 12:19:33

标签: c# wpf flowdocument

我有一个来自WPF RichTextBox FlowDocument 实例。我必须找到 FlowDocument 中更改样式的所有位置。

参与参数:

    类型为 FlowDocument
  • doc - 用于分析的文档
  • 类型 TextPointer
  • beginPoint endPoint - 从 doc 开始和分析范围的结尾

返回数据:

  • TextPointer [] ,代表 doc 中检测到样式更改的位置列表

分析文字示例:“欢迎 真实的世界!”有四种风格:“欢迎”(正常),“到”(粗体),“”(粗体斜体),“真实”(斜体),“世界!” (正常)

谢谢!

1 个答案:

答案 0 :(得分:1)

FlowDocument 包含 Blocks 的集合。每个块可以是段落类型。 段落包含内联属性。样式的每次更改都是 Inline 实例,其中包含 ContentBegin ContentEnd

因此整个文档的最终代码如下所示:

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硬件升级。