【发布时间】:2017-04-11 17:25:14
【问题描述】:
在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 线程更新滚动,我的浏览器会冻结...
【问题讨论】:
标签: silverlight printing