2010-10-01 67 views
1

我使用Silverlight 4的打印,但我想某种进度条或繁忙的指标。Silverlight的印刷忙碌进度条

我试图用一个进度条,但它不是真正的工作。在2个问题我有是:

  • 的进度条不显示进度,我有IsIndeterminate =真,但打印开始时不动画(打印对话框中的打印按钮被点击)
  • 进度条可见没有在适当的时间设置,取决于我把代码设置为可见性的位置,它显示得太快(在打印被点击之前)或太晚(在打印已经工作一段时间之后)

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

我试图用一个调度程序调用,但我得到一个安全异常(只能从用户点击显示的对话框)。

如何应对上述任何问题的任何想法?

谢谢。

回答

1

创建XAML中一个BusyIndi​​cator控件,它是Silverlight工具包的一部分。然后在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 = ""; 
      }; 
+0

不工作,为我所有。即使我可以看到它通过断点设置为真,但它不会显示它。 – 2011-03-10 18:35:06

+0

我使用了一个简单的标签,其中包含默认隐藏的文本“请稍候”,并且在打印开始时可见 – user3340627 2014-07-16 10:49:40