在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线程更新滚动,我的浏览器就会冻结.
发布于 2017-04-11 09:25:14
打电话给ScrollViewerVertical.UpdateLayout()解决了这个问题
https://stackoverflow.com/questions/42527126
复制相似问题