PrintDocument 和 Scrollviewer

PrintDocument and Scrollviewer

我正在 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 线程更新滚动,我的浏览器会冻结...

调用 ScrollViewerVertical.UpdateLayout() 解决了问题