我在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;
}
如果我使用ManualResetEvent
和WaitOne
等待UI线程更新滚动,我的浏览器会冻结......
答案 0 :(得分:0)
致电ScrollViewerVertical.UpdateLayout()
解决了问题