首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UWP中的测量和显示是不同的

UWP中的测量和显示是不同的
EN

Stack Overflow用户
提问于 2015-11-10 19:24:39
回答 1查看 649关注 0票数 0

我想实现带有分页符的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 (想给文本添加背景)。事实证明,它工作得更好,但文本在页面末尾被剪切。它开始在所有页面上工作,除了预览中的第一页(文本是单行的,并且由于某些未知的原因在第一页上不会换行)。它在打印文档中工作正常。奇怪的是,如果我关闭预览并再次单击打印(即使页面上的最后一行仍然被剪切),它仍然可以正常工作。

EN

回答 1

Stack Overflow用户

发布于 2015-11-11 21:03:58

我试过你的示例代码:问题是你的两个应用程序的系统默认模板并不完全相同,所以项目的显示模式有一点不同。要解决win10应用程序中的问题,最好为控件定义适当的布局样式。有多种方法可以实现这一点:在资源中添加适当的模板,或者在代码中定义。

请尝试以下"PreparePrintContent“函数中的代码。请注意,我通过设置UIElement的边距来调整布局。这是一个非常简单的方法,仅供参考:

代码语言:javascript
复制
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);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33628878

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档