0

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

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

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

4

1 回答 1

0

从字面上看,我在吠叫错误的树!我的问题的答案是 FlowDocumentReader 是可视树的一部分。我不得不去寻找它。可能有更优雅的方法可以做到这一点,但这个方法有效:

    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);
        }
    }
于 2013-10-29T20:08:45.107 回答