1

コード ビハインドから入力している FlowDocumentPageViewer コントロールがあります。3-4 項目からテキストを追加しています。アイテム 1,2,3... がどのページで終了するかを知る必要があります。

これらのアイテムは、ループ内の FlowDocument に追加され、最後に私が持っている

flowDocumentPageViewer.Document = resultsDocument;

でも、それでも電話したら

flowDocumentPageViewer.PageCount

それでも 0 になります。クリックなどのイベントを実行し、ウィンドウがレンダリングされた後に上記の PageCount を出力すると、正しい値が出力されます。ただし、FlowDocument に入力するときに、この値の現在の合計が必要です。誰かがテキストメトリックまたはこれを解決できる他の方法で何らかのトリックを知っていることを願っています.

4

2 に答える 2

1

この種の情報を取得するには、コントロールの (仮想) レンダリングをトリガーするしかありません。

最も簡単な方法は、FlowDocumentPageViewer を強制するupdateLayout()ことですが、これはおそらく必要としない情報を取得する前に結果が表示されることを意味します。

Arrange()コンテンツを表示したくない場合は、次のメソッドを使用することもできます。

http://msdn.microsoft.com/en-us/library/system.windows.uielement.arrange.aspx

コントロールでこれを使用した後、更新された情報を取得する必要があります。

于 2011-02-16T16:15:58.473 に答える
0

私も同じ問題を抱えていましたが、正直なところ、今でもそうしています。updateLayout()は役に立ちませんでした。ここで、タイマーを使用して、ビューアにドキュメントを送信するように指示した後、1秒後にページ数を取得します。正常に動作します。

于 2013-01-02T14:33:48.420 に答える