WPF:打印分页数据网格的最佳方法

时间:2010-06-09 20:15:48

标签: wpf datagrid printing

男孩接受了这方面的教育。我想我已经被Powerbuilder宠坏了,它具有出色的功能,开箱即用。

有没有人认真编写自定义documentpaginator对象来处理其LOB应用程序的报告需求?我希望能够“免费”打印,而不必像疯了一样编码,只是为了在屏幕上拍摄并将其扔在纸上。

人们是如何做到这一点的?是否有人建议第三方允许打印较大的数据网格?

由于

2 个答案:

答案 0 :(得分:1)

Paginating datagrids是一个巨大的巨大痛苦。简单地在页面上绘制网格将不起作用,因为您必须处理诸如固定布局,水平和垂直扩展单元格以显示所有数据,自动换行,将列和行拆分到页边距,将页面溢出的单元格拆分为多个页面。请记住,您无法在一张纸上滚动或调整控件的大小。即使您找到了可以完成所有这些操作的魔法控件,屏幕上看起来很好的边框,阴影和背景的网格也不会在纸上看起来很好。

对于打印数据网格的旧WinForms应用程序,我们为打印输出实现了完全独立的报告API。我们使用免费的ReportViewer控件打印了底层的ADO.Net dataSource。教程位于gotreportviewer.com

答案 1 :(得分:0)

我发现最简单的方法是实现一个通用的DocumentPaginator类,用于对我可以放在屏幕上的任何内容进行分页。使用我的DocumentPaginator,我不需要担心打印,因为我可以使用任意WPF控件并告诉它打印,如果需要显示所有数据将需要多个页面。

我还使用用户可以控制的继承的附加bool属性“PrintView”。我的一些控件使用“PrintView”属性上的触发器稍微改变了它们的外观,因此打印时它们看起来会更好。

我更详细地描述了我的DocumentPaginator解决方案in this answer,包括所需算法的描述。