C#WPF导航到框架中的FlowDocument:需要设置ViewMode = Scroll

时间:2013-10-29 17:35:40

标签: wpf-controls frame flowdocumentreader

导航到Frame中的FlowDocument时,FlowDocumentReader默认为ViewMode = Page。我需要获得对FlowDocumentReader的引用,以便我可以将ViewMode属性设置为Scroll。

我可以通过将Frame的Content属性强制转换为FlowDocument来获取对FlowDocument对象的引用,但是当我导航到文档时,我找不到对实例化的FlowDocumentReader的引用。

据我所知,用户可以轻松点击FlowDocumentReader中的滚动视图按钮,但我应该能够以编程方式执行此操作。

1 个答案:

答案 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);
        }
    }