2017-03-01 76 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()解决了问题