2017-03-01 72 views
0

我正在用ScrollViewer的幫助打印大屏幕(高)。
PrintPage處理程序中,向下滾動ScrollViewer,然後將PageVisual設置爲ScrollViewer實例。當SV在底部時,我將HasMorePages屬性設置爲false。
我的問題是,這是工作正常條件我提示用戶與每個頁面之間的MessageBox,否則SV不會滾動,除非在打印過程結束。打印文檔和滾動查看器

我試圖做的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; 
} 

如果我用一個WaitOneManualResetEvent等待UI線程更新滾動,我的瀏覽器凍結...

回答

0

致電ScrollViewerVertical.UpdateLayout()解決了問題