【问题标题】:How can I display a BusyIndicator during printing in Silverlight 4?如何在 Silverlight 4 中打印期间显示 BusyIndi​​cator?
【发布时间】:2011-06-01 14:52:26
【问题描述】:

我想在打印期间显示 BusyIndi​​cator。如果我在 BeginPrint 事件中打开我的 BusyIndi​​cator 并在 EndPrint 事件中将其关闭,它永远不会出现(BusyIndi​​cator.DisplayAfter 设置为 0)。我认为这是因为实际打印是在不同的线程上进行的。因此,如果我在实际调用 PrintDocument.Print 之前打开它,BusyIndi​​cator 会显示,但这当然不是我想要的(当用户在实际打印之前选择他/她的打印机时会出现 BusyIndi​​cator)。

我尝试创建我的用户控件的属性,该属性实现为 BusyIndi​​cator.IsBusy 绑定到的 DependencyProperty,并在 BeginPrint 和 EndPrint 事件中设置该属性的值 true/false。我通过在打印之外将其设置为 true 来测试与此属性的绑定,并且它可以工作。但是,当我在打印事件中设置该属性时,什么也没有。

我也不能在 BackgroundWorker 的 BeginPrint 或 EndPrint 事件中做任何工作。

我怎么能打开我的 BusyIndi​​cator?

【问题讨论】:

  • 当您看到“BeginX”时,您可以放心地假定它是一个异步进程。您可以添加自己的等待句柄并查找指示完成的事件。尚未这样做是silverlight,但期待看到最终解决方案。
  • 不确定这是否适合您,但我很好奇并试了一下。我使用 Button.Click 事件启动一些打印。在那种情况下,我打开了 BusyIndi​​cator,然后在 PrintDocument.EndPrint 中将其关闭。
  • 在这里查看同样的问题stackoverflow.com/questions/3843499/…

标签: silverlight silverlight-4.0 c#-4.0


【解决方案1】:

来自俄罗斯的黑客 ))) 我是这样做的:https://cid-99a78e3907425ccf.office.live.com/self.aspx/Sources/PrintDataGrid.RAR。在这里,我正在打印我的 DataGrid,并显示 busyindicator。

【讨论】:

  • 不要以'HACK'开始你的帖子
猜你喜欢
  • 2011-03-27
  • 2012-11-11
  • 1970-01-01
  • 2012-04-30
  • 2012-07-10
  • 1970-01-01
  • 1970-01-01
  • 2012-04-11
  • 2011-08-17
相关资源
最近更新 更多