0

我想用分页符实现 itemsControl 打印,如下面的博客所述:http: //blogs.u2u.be/diederik/post/2013/05/21/Printing-a-XAML-ItemsControl-from-a-Windows -8-Store-app.aspx

问题是在 Windows 10 中它无法正常工作(我添加了背景以显示 itemsControl 中的项目以进行调试): 赢10版本

虽然 8.1 版本按预期工作: 赢8.1版本

有什么想法可能是错的吗?它所做的只是将段落添加到富文本中,测量每个项目的内容,然后按页面拆分。Windows 10 示例在这里。Windows 8.1 示例在这里

更新:

更多信息:我将文本块更改为文本框(想为文本添加背景)。事实证明它效果更好,但文本在页面末尾被剪切。它开始在所有页面上工作,除了预览中的第一页(文本是单行并且由于某些未知原因而没有在第一页上换行)。它在打印文档中正常工作。奇怪的是,如果我关闭预览并再次单击打印,它可以正常工作(即使页面上的最后一行仍然被剪切)。

4

1 回答 1

1

我试过你的示例代码: 问题是你的两个应用程序的系统默认模板不完全一样,所以项目的显示方式有点不同。要解决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);
于 2015-11-11T13:03:58.463 回答