为什么打印超过1页的文档时,silverlight会无限循环? .HasMorePages = true

时间:2010-09-09 14:32:19

标签: silverlight silverlight-4.0 printing grid

我在stackoverflow上的第一个问题。 我正在尝试打印一个动态生成的长网格。

pdoc.PrintPage += (p, args) =>
        {
            args.PageVisual = myGrid;
            args.HasMorePages = false;
        };

当我使用args.HasMorePages = false;时,它会打印网格的第一页(尽管需要一些时间,因为它会向不良的打印机发送一个123MB的大位图 - 感谢silverlight 4的打印功能实现。 )。

但是,当我使用args.HasMorePages = true;启用打印更多页面时,打印作业会在内存中运行,并发送文档第一个打印页面的无限副本 - 有效地禁用了我的开发人员计算机。即使网格只有2页长。

为什么会这样? 这里有什么可行的解决方法?我在网上发现的只是SL处理打印很糟糕,但不是真正的解决方案。

1 个答案:

答案 0 :(得分:1)

HasMorePages属性表示Silverlight打印您至少要打印一页。为每个要打印的页面触发PrintPage页面事件。

因此,当您将HasMorePages设置为true时,您将获得另一个PrintPage事件,如果您始终将其设置为true(因为您的代码似乎正在执行),那么您将创建一个无限循环。

在某些时候,代码必须将HasMorePages设置为false。

最终由开发人员执行所有分页逻辑并决定每页上显示的内容,Silverlight不会自动为您执行此操作。