【问题标题】:Silverlight printing busy\progress barSilverlight 打印忙\进度条
【发布时间】:2010-10-01 22:44:59
【问题描述】:

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

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

  • 进度条不指示进度,我设置了 IsIndeterminate=True,但打印开始时没有动画(单击打印对话框的打印按钮)
  • 进度条可见性未在适当的时间设置,这取决于我将代码设置为可见性的位置,它显示得太早(在单击打印之前)或太晚(在打印工作一段时间后)李>

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

我尝试使用调度程序调用,但出现安全异常(只能通过用户单击显示对话框)。

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

谢谢。

【问题讨论】:

    标签: silverlight silverlight-4.0 printing


    【解决方案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 = "";
                };
    

    【讨论】:

    • 根本不适合我。即使我可以看到它通过断点设置为 true,但它不会显示它。
    • 我使用了一个带有“请稍候”文本的简单标签,默认隐藏,打印开始时可见
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-09
    • 1970-01-01
    相关资源
    最近更新 更多