迭代TextPointer对象中的多个段落

时间:2012-05-16 13:50:19

标签: c# .net wpf

我正在使用RichTextBox中的FlowDocuments,更具体地说,当TextChange事件发生时,使用TextRanges和TextPointers。

我正在通过

访问TextRange
TextChange change;  
TextRange range = new TextRange(RichTextControl.Document.ContentStart, RichtextControl.Document.ContentEnd);
TextRange changeRange = new TextRange(range.Start.GetPositionAtOffset(change.Offset), range.Start.GetPositionAtOffset(change.Offset+change.AddedLength));

TextRange我必须跨越多个Paragraphs。我从选择中提取的TextRange,简化,如下所示:

<Section>
  <Paragraph>
    <Span>
      <Run>Test1</Run>
    </Span>
  </Paragraph>
  <Paragraph>
    <Span>
      <Run>Test2</Run>
    </Span>
  </Paragraph>
</Section>

我现在可以使用TextRange.Start访问我的第一段。我可以通过访问Inlines来正常遍历这一段。

但是,只要我想访问第二段,我就会有一些选择。我可以看到TextPointer.GetNextContextPosition,但这会导致我跳过Textpointer Offset位置,直到指针处于变化的上下文中,我希望这不可能是这样做的。

我不知道我是否只是错误地实际捕获已更改的文本,或者我只是错过了正确的接口来遍历该部分中包含的所有段落。如果是这样,解决方案应该很容易,但我看不到它。

1 个答案:

答案 0 :(得分:0)

我似乎缺乏正确的搜索条件来找到解决方案。我发现了一些可能在http://www.bryanewert.net/journal/2010/5/26/how-to-explore-the-contents-of-a-flowdocument.html

中使用的内容