如何在FlowDocument中找到样式更改的位置
本文关键字:样式 位置 FlowDocument | 更新日期: 2023-09-27 18:15:46
我有一个FlowDocument实例从WPF RichTextBox。我必须找到所有的地方在FlowDocument的风格改变。
输入参数:
- doc类型FlowDocument -用于分析的文档
- beginPoint和endPoint类型TextPointer -从doc 分析范围的开始和结束
- TextPointer[]表示在doc中检测到样式变化的位置列表
谢谢!
FlowDocument包含 block 的集合。每个Block可以是Paragraph类型。段落包含内联属性。每个样式的更改都是一个内联实例,该实例具有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标记进行升级。