【发布时间】:2016-09-03 18:32:56
【问题描述】:
我想加载大的 .rtf 文件并滚动到其中的特定段落。
所以我做了这样的事情:
private FlowDocument GenerateDocument(string path)
{
var doc = new FlowDocument();
using (FileStream fs = File.Open(path, FileMode.Open, FileAccess.Read))
{
var content = new TextRange(doc.ContentStart, doc.ContentEnd);
content.Load(fs, DataFormats.Rtf);
}
return doc;
}
然后,我查找已添加书签的段落并想要滚动到那里。像这样的:
private void ScrollToBookmark(string bookmark)
{
Paragraph p = LookUp(bookmark);
if (p != null) p.BringIntoView();
}
LookUp 是查找所需段落的功能,它运行良好,并返回 先前加载的文档中的段落。
然后……什么都没有发生。有什么建议吗?
我使用 FlowDocumentReader 来显示我的 Flowdocument。 BringIntoView 在 ScrollMode 和 PageMode 中都不起作用。
通过逻辑树直接访问 FlowDocumentReader 的滚动查看器并使用它进行操作不是一种选择。我根本不知道在哪里滚动,如果可能的话,我宁愿不使用任何“黑客”。
【问题讨论】:
标签: wpf flowdocument