我在stackoverflow上的第一个问题。 我正在尝试打印一个动态生成的长网格。
pdoc.PrintPage += (p, args) =>
{
args.PageVisual = myGrid;
args.HasMorePages = false;
};
当我使用args.HasMorePages = false;
时,它会打印网格的第一页(尽管需要一些时间,因为它会向不良的打印机发送一个123MB的大位图 - 感谢silverlight 4的打印功能实现。 )。
但是,当我使用args.HasMorePages = true;
启用打印更多页面时,打印作业会在内存中运行,并发送文档第一个打印页面的无限副本 - 有效地禁用了我的开发人员计算机。即使网格只有2页长。
为什么会这样? 这里有什么可行的解决方法?我在网上发现的只是SL处理打印很糟糕,但不是真正的解决方案。
答案 0 :(得分:1)
HasMorePages
属性表示Silverlight打印您至少要打印一页。为每个要打印的页面触发PrintPage
页面事件。
因此,当您将HasMorePages
设置为true时,您将获得另一个PrintPage
事件,如果您始终将其设置为true(因为您的代码似乎正在执行),那么您将创建一个无限循环。
在某些时候,代码必须将HasMorePages
设置为false。
最终由开发人员执行所有分页逻辑并决定每页上显示的内容,Silverlight不会自动为您执行此操作。