打印大型WPF用户控件

SHA*_*R S 5 c# wpf xaml

我有一个巨大的数据,我想用WPF打印.我发现WPF提供了PrintDialog.PrintVisual一种打印从Visual类派生的任何WPF控件的方法.

PrintVisual只打印一个页面,所以我需要缩放控件以适应页面.不幸的是,这对我不起作用,因为报告有时足够长,以至于在缩放以适合页面时无法轻松阅读.

WPF提供的另一种打印选项是在a中创建一个单独的视图FlowDocument.这可能是打印文档的最佳方式,但它比我想要的更多工作,更不用说我希望打印的每个控件都必须保留的额外视图.

我在这个链接中得到了另一个解决方案,但对我来说似乎太复杂了.

有没有更好,更简单的解决方案呢?谢谢你的帮助

Pet*_*ore 2

我假设您的报告显示在DataGrid可滚动的或其他可滚动的内容中?

我相信,FlowDocument如果您想打印看起来(没有更好的词)专业的东西,这里绝对是您的最佳选择。但如果你想要一些快速而肮脏的东西,你可以使用一系列操作RenderTargetBitmap.Render。基本过程是:

  1. 创建RenderTargetBitmap
  2. 滚动视图,以便在一页上看到要打印的区域
  3. 调用包含“大”控件的RenderTargetBitmap.RenderDataGridScrollViewer
  4. 打印生成的位图
  5. 重复下一个“页面”

再次强调,不要调用RenderTargetBitmap.Render“大”控件。ScrollViewer如果尚未将大控件包装在 a 中,则将其包装起来。这本质上就是你的分页器。

我不知道你对结果是否满意,但这是我能想到的最简单的方法。看起来就像你PrintScreen每次都手动点击一样。不确定这是否是您想要的,但如果您想让它看起来更好,我认为您需要使用FlowDocument.