【问题标题】:PrintDocument and ScrollviewerPrintDocument 和 Scrollviewer
【发布时间】: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;
}

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

【问题讨论】:

    标签: silverlight printing


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2011-11-11
      • 1970-01-01
      • 1970-01-01
      • 2012-09-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-13
      • 2011-03-30
      相关资源
      最近更新 更多