2010-10-01 109 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