1

flowdocument reader には pagenumber プロパティがありますが、そのプロパティは読み取り専用です。フロードキュメント リーダーで特定のページ番号に移動する方法はありますか。助けてください。

ありがとう。

4

2 に答える 2

2

FlowDocumentReader に含まれる FlowDocument のブロックを追跡する場合は、次のように単純に使用できます。

// 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();
于 2012-11-23T10:41:17.130 に答える
1

ユーザーをページ表示に制限する場合は、代わりにFlowDocumentPageViewerを使用してください。これにはGoToPage()メソッドがあります。何らかの理由で、GoToPage()はFlowDocumentReaderで提供されていないようです。これは、FlowDocumentReaderが常にページングが意味のあるモードにあるとは限らず(ユーザーは連続スクロールビューを選択できる)、意味のあるときに独自のUIを提供するためだと思います。

NavigationCommands.GoToPageコマンドを送信してみることができますが、これはFlowDocumentPageViewerおよびDocumentViewerでの動作としてのみ文書化されています。FlowDocumentReaderではテストしていません。

于 2009-10-26T05:09:34.713 に答える