如何在WPF表单中将内容移动到下一页

时间:2012-08-08 12:14:42

标签: wpf wpf-controls

我是WPF的新手,如果有什么问题请合作。我需要专家的一些想法。

我正在开发一个应用程序,在填写表单上的字段后,我必须在WPF表单上显示一些内容。在同一表单上,我还有一个打印选项。

检查此图像。这是我的表格,此处红色块的一部分是在运行时生成的。当我点击打印按钮时,它只显示纸张上的可见部分并跳过剩下的部分。

WPF Form

问题: 当我点击打印时,如何将滚动的表单的剩余部分移动到下一页。

例如在给定的图片中,我们只能看到2只公牛眼睛完全看到,接下来只有2只。我如何将剩下的部分转移到下一页当我点击打印时

2 个答案:

答案 0 :(得分:2)

答案很简单:不要依赖窗口进行打印,而是构建您想要的视觉效果然后打印出来。
例如,您必须具有动态创建圆等的功能,然后将它们添加到Panel。您可能要做的是打印面板 或者如果您愿意,可以动态构建一个新窗口,在其中根据需要放置所需的所有数据,然后打印窗口。这种方法的优点是它对内容更灵活(如果你想要一个页眉/页脚),你也可以轻松地观看内容进行调试。请注意,即使Window内容是动态的,您也可以使用基本窗口进行打印,避免使用代码执行过多的xaml(探索:您可能将TextBox绑定到您在Print Window的构造函数中设置的PrintTitle属性) ...)。
请注意,未在屏幕上呈现的视觉效果将无法打印。为了避免常见问题,请在这个伟大的网站上查看这篇文章,在这里打开代码:
http://www.switchonthecode.com/tutorials/printing-in-wpf

编辑(回复评论中的问题):
1)如果你有固定数量的公牛眼,只需为该号码制作一个窗口并打印它,这是更容易的。 2)要将Visuals放在页面而不是行中,您必须依赖页面宽度/高度。重要的是你的控件大小与页面大小。在该示例中,他们构建(在OnRender中)具有LineHeight,LineWidth作为大小的控件。做同样的事情:尝试尽可能多地控制,例如       (控制高度+边距)* NumberOfControlPerPage<页面高度。
然后,您必须更改OnRender以呈现控件而不是使用矩形+文本创建的行。在Horizo​​ntal StackPanels中逐个打包控件然后将这些StackPanel打包到垂直StackPanel中,然后渲染。您必须跟踪最后呈现控件的每个页面,然后在以下控件中恢复渲染。

答案 1 :(得分:0)

请关注this链接。这是我在网络世界中搜索后的基本信息。使用此基本细节,您可以在WPF中执行任何打印