Silverlight打印繁忙\进度条

时间:2010-10-01 22:44:59

标签: silverlight silverlight-4.0 printing

我正在使用Silverlight 4进行打印,但我想要某种进度条或忙碌指示器。

我尝试使用进度条,但它并没有真正起作用。我遇到的两个问题是:

  • 进度条不表示进度,我有IsIndeterminate = True,但打印开始时没有动画(点击打印对话框的打印按钮)
  • 进度条可见性未在适当的时间设置,具体取决于我放置代码以设置可见性的位置,它显示得太快(点击打印前)或太晚(打印工作一段时间后)

我猜,但我认为上述原因是因为当显示打印对话框时,Silverlight已将控制权交给操作系统进行打印(??)。

我尝试使用调度程序调用但是我收到了一个安全异常(对话框只能通过用户点击显示)。

有关如何处理上述任何一个问题的任何想法?

感谢。

1 个答案:

答案 0 :(得分:1)

在XAML中创建一个BusyIndi​​cator,它是Silverlight Toolkit的一部分。然后在BeginPrint事件期间将BusyIndi​​cator的IsBusy设置为True。同样在EndPrint期间,将IsBusy设置为false。

  var docToPrint = new PrintDocument();

        docToPrint.BeginPrint += (s, args) =>
            {
                MyBusyIndicator.IsBusy = true;
                MyBusyIndicator.BusyContent = "Printing...";
            };

        docToPrint.PrintPage += (s, args) =>
            {
             args.PageVisual = this.MainCanvas;                      
            };

        docToPrint.EndPrint += (s, args) =>
            {
                MyBusyIndicator.IsBusy = false;
                MyBusyIndicator.BusyContent = "";
            };