导航到Frame中的FlowDocument时,FlowDocumentReader默认为ViewMode = Page。我需要获得对FlowDocumentReader的引用,以便我可以将ViewMode属性设置为Scroll。
我可以通过将Frame的Content属性强制转换为FlowDocument来获取对FlowDocument对象的引用,但是当我导航到文档时,我找不到对实例化的FlowDocumentReader的引用。
据我所知,用户可以轻松点击FlowDocumentReader中的滚动视图按钮,但我应该能够以编程方式执行此操作。
答案 0 :(得分:0)
我正在咆哮错误的树!我的问题的答案是FlowDocumentReader是Visual树的一部分。我不得不去寻找它。可能有更优雅的方法可以做到这一点,但这个方法有效:
static public void SetReaderModeToScroll(Visual myVisual)
{
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(myVisual); i++)
{
// fetch the child
Visual childVisual = (Visual)VisualTreeHelper.GetChild(myVisual, i);
// attempt to cast it to a FlowDocumentReader
try
{
FlowDocumentReader reader = (FlowDocumentReader) childVisual;
// if we get this far, we've found the reader
reader.ViewingMode = FlowDocumentReaderViewingMode.Scroll;
return;
}
// catch the exception if it doesn't work
catch (Exception e)
{
}
// Drill down another level and keep looking
SetReaderModeToScroll(childVisual);
}
}