我正在使用 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 跨越多个段落。我从选择中提取的简化后的 TextRange 如下所示:
<Section>
<Paragraph>
<Span>
<Run>Test1</Run>
</Span>
</Paragraph>
<Paragraph>
<Span>
<Run>Test2</Run>
</Span>
</Paragraph>
</Section>
我现在可以访问我使用的第一个段落TextRange.Start
。我可以通过访问 Inlines 来正常遍历这一段。
但是,一旦我想访问第二段,我就没有选择了。我可以看到TextPointer.GetNextContextPosition
,但这会导致我跳过 Textpointer Offset 位置,直到指针所在的上下文发生变化,我希望这不是这样做的方法。
我不知道我是否只是在实际捕获更改的文本时做错了,或者我是否只是缺少正确的界面来遍历该部分中包含的所有段落。如果是这样,解决方案应该很容易,但我只是看不到它。