我想实现带有分页符的itemsControl打印,就像下面的博客中描述的那样:http://blogs.u2u.be/diederik/post/2013/05/21/Printing-a-XAML-ItemsControl-from-a-Windows-8-Store-app.aspx
问题是,在Windows10中,它不能正常工作(我添加了背景以在itemsControl中显示项目以进行调试):
虽然8.1版本的工作方式与预期一致:
你知道哪里会出问题吗?它所做的只是将段落添加到富文本中,测量每个项目的内容,然后按页面拆分。Windows 10示例为here。Windows8.1示例为here。
更新:
更多信息:我把textblock改成了textbox (想给文本添加背景)。事实证明,它工作得更好,但文本在页面末尾被剪切。它开始在所有页面上工作,除了预览中的第一页(文本是单行的,并且由于某些未知的原因在第一页上不会换行)。它在打印文档中工作正常。奇怪的是,如果我关闭预览并再次单击打印(即使页面上的最后一行仍然被剪切),它仍然可以正常工作。
发布于 2015-11-11 13:03:58
我试过你的示例代码:问题是你的两个应用程序的系统默认模板并不完全相同,所以项目的显示模式有一点不同。要解决win10应用程序中的问题,最好为控件定义适当的布局样式。有多种方法可以实现这一点:在资源中添加适当的模板,或者在代码中定义。
请尝试以下"PreparePrintContent“函数中的代码。请注意,我通过设置UIElement的边距来调整布局。这是一个非常简单的方法,仅供参考:
var x = itemsControl.ContainerFromItem(item) as ContentPresenter;
Paragraph p = new Paragraph();
InlineUIContainer c = new InlineUIContainer();
var o = x.ContentTemplate.LoadContent() as UIElement;
(o as FrameworkElement).DataContext = item;
(o as FrameworkElement).Margin = new Thickness(40);
https://stackoverflow.com/questions/33628878
复制