【问题标题】:UWP Print preview not updating after window resize窗口调整大小后 UWP 打印预览不更新
【发布时间】:2016-09-01 21:10:19
【问题描述】:

我目前正在开发一个 UWP 应用并使用 Windows.Graphics.Printing.PrintManager 类来显示预览窗口。我有一些影响结果的控件,当用户更改它们时,我调用printDocument.InvalidatePreview() 来刷新预览。在用户调整窗口大小之前它工作正常。之后调用printDocument.InvalidatePreview()后预览不会更新。

绝对不清楚InvalidatePreview 内部发生了什么,因为文档很差而且没有源代码。

有人知道解决方法或解决方法吗?

【问题讨论】:

    标签: uwp


    【解决方案1】:

    我写了一个非常简单的演示来尝试重现您的问题,但我无法重现。我在用户更改打印预览选项后调用printDoc.InvalidatePreview(),代码如下

      if (optionId == "PageContent")
      {
          await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
          {
              printDoc.InvalidatePreview();
          });
      }
    

    而且它运行良好,在应用程序的窗口调整大小后它也运行良好。如果您已订阅 InvaliddatePreview() 似乎会调用 PrintDocument.GetPreviewPage 事件,并且打印预览将刷新。我把demo上传到了github,你可以下载下来测试一下,和你的项目对比一下,找出差异。如果无法通过比较差异解决,您可以尝试在此演示中重现您的问题,让我们再次帮助解决。

    更多详情请参考:https://msdn.microsoft.com/en-us/windows/uwp/devices-sensors/print-from-your-app。 以及官方样品:https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/Printing

    【讨论】:

    • 感谢您关注我的问题。您的代码有效,它帮助我更好地理解了问题。分页需要很长时间处理我的数据(我有超过 10 页),并且在我的情况下会破坏打印预览。如果您将System.Threading.Tasks.Task.Delay(1000).Wait(); 添加到PrintDic_Paginate 方法中,您可以在您的应用中重现该问题。
    • 我发现我可以重现您的问题。 “调整窗口大小”实际上是指调整打印 UI 窗口的大小,对吗?调整打印 UI 的大小将导致此问题。我会与我的团队沟通。
    • 是的,正确的。调整打印 UI 窗口的大小会导致问题。
    猜你喜欢
    • 1970-01-01
    • 2012-09-25
    • 2012-10-29
    • 1970-01-01
    • 2014-03-14
    • 2019-04-01
    • 2012-12-02
    • 2015-04-20
    • 1970-01-01
    相关资源
    最近更新 更多