PrintDocument和Scrollviewer

时间:2017-03-01 08:50:32

标签: silverlight printing

我在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;
}

如果我使用ManualResetEventWaitOne等待UI线程更新滚动,我的浏览器会冻结......

1 个答案:

答案 0 :(得分:0)

致电ScrollViewerVertical.UpdateLayout()解决了问题