2017-03-01 5 views
0

ScrollViewerの助けを借りて、大きな画面(高さ)をいくつか印刷しています。
PrintPageハンドラでは、ScrollViewerをスクロールしてPageVisualScrollViewerインスタンスに設定します。 SVが底にあるとき、私はHasMorePagesプロパティをfalseに設定します。
問題はこれが正常に動作していることです。の条件では、各ページ間でMessageBoxを使用するようにユーザーに指示します。そうしないと、印刷プロセスの最後を除いてSVはスクロールしません。PrintDocumentとScrollviewer

私は、UIスレッドが、運にスクロールを実行しようとしました:

void Print_PrintPage(object sender, PrintPageEventArgs e) 
{ 
    // DefPage contains properties of the printed page 
    DefPage defPage = _enumeratorPages.Current; 
    e.HasMorePages = _enumeratorPages.MoveNext(); 
    ScrollViewerVertical.Dispatcher.BeginInvoke(delegate { 
     ScrollViewerVertical.ScrollToVerticalOffset(defPage.OffsetY); 
    }); 
    e.PageVisual = ScrollViewerVertical; 
} 

そして私は、スクロールを更新するUIスレッド、私のブラウザの凍結を待つWaitOneManualResetEventを使用している場合...

答えて

0

ScrollViewerVertical.UpdateLayout()への呼び出しは、問題を解決しました。