flowdocument reader中有一个pagenumber属性。但该属性是readonly。有没有办法在flowdocument reader中转到特定的页码。请帮助。
感谢。
答案 0 :(得分:2)
如果跟踪FlowDocumentReader中包含的FlowDocument上的Blocks, 你可以简单地使用:
// Getting a block by index
YourReader.Document.Blocks.ElementAt(index).BringIntoView();
// Showing Last Block
YourReader.Document.Blocks.LastBlock.BringIntoView();
// Showing the last Inline
(YourReader.Document.Blocks.LastBlock as Paragraph).Inlines.LastInline.BringIntoView();
这在FlowDocumentReader的ViewingModes页面上只能 。
如果你想在滚动模式下这样做,你必须沿着可视树向下搜索ScrollViewer, 像这样的事情:
public static ScrollViewer FindScroll(Visual visual)
{
if (visual is ScrollViewer)
return visual as ScrollViewer;
ScrollViewer searchChiled = null;
DependencyObject chiled;
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(visual); i++)
{
chiled = VisualTreeHelper.GetChild(visual, i);
if (chiled is Visual)
searchChiled = FindScroll(chiled as Visual);
if (searchChiled != null)
return searchChiled;
}
return null;
}
ScrollViewer scroller = FindScroll(YourReader as Visual);
if (scroller != null)
(scroller as ScrollViewer).ScrollToBottom();
答案 1 :(得分:1)
如果您愿意将用户限制为分页显示,请改用FlowDocumentPageViewer:这有一个GoToPage()方法。出于某种原因,似乎没有在FlowDocumentReader上提供GoToPage();我猜这是因为FlowDocumentReader并不总是处于分页有意义的模式(用户可以选择连续的滚动视图),并在有意义时为此提供自己的UI。
您可以尝试向其发送NavigationCommands.GoToPage命令,但这仅记录为在FlowDocumentPageViewer和DocumentViewer上工作;我没有在FlowDocumentReader上测试它。