2010-10-21 77 views
1

嘗試在SL4中實現簡單打印。我有一個DataGrid,我想打印出來,但到目前爲止,無論我嘗試打印出什麼都是作爲打印機中的空白頁面出現的。它似乎也需要大約30-60秒才能打印出來(但這可能是一個無關緊要的問題)。Silverlight 4打印:空白頁面

我的代碼是相當簡單:

private void MenuPrint_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) 
     { 
      PrintDocument document = new PrintDocument(); 
      document.PrintPage += (s, args) => 
       { 
        args.PageVisual = this.MainDataGrid; 
        // args.PageVisual = this.LayoutRoot; 
       }; 

      // Print 
      document.Print("Test Print Job"); 
     } 

如果是因爲項目太大,我甚至懷疑?

的XAML的MainDataGrid控制是相當直接的還有:

<sdk:DataGrid Grid.Row="3" AutoGenerateColumns="True" Name="MainDataGrid" FontSize="10" Visibility="Visible" /> 

回答

0

原來這是與PC相關的,而不是代碼問題。無論出於何種原因,相同的代碼今天開始工作(在機器重啓後)。

有一件事仍是​​一個問題是,Silverlight的界面似乎掛起約30-60秒,而打印正在發生的事情,但它最終不會釋放和print./

+0

打印您的打印作業? – 2010-10-28 18:34:27

+0

我想我可以。只是不知道爲什麼我的打印作業需要30-60秒,當我從這臺PC上打印的任何東西需要大約1秒。我沒有做任何事情,只需調用PrintDocument.Print方法即可。 – enforge 2010-10-28 18:54:16

+0

要打印Silverlight將表示整個頁面的位圖發送到打印機 - 數據量很大。 Silverlight 5將改變這一點,但只有在使用正確的PostScript驅動程序時纔會如此。 – JBrooks 2011-11-01 19:23:22

0

唯一的區別我可以在你的例子和MSDN一個之間看到的是,你使用匿名方法的PrintPage事件處理器。您是否嘗試處理EndPrint事件以檢查錯誤?

+0

我接過一看EndPrint功能,並且args.Error項目顯示爲空值。我的應用程序似乎在試圖打印時鎖定/凍結約60秒,並且它向打印機發送一個項目(它說在打印監視器中打印),然後它實際上打印出一個空白頁面。 – enforge 2010-10-21 19:45:47

+0

我也有以下的,如果我嘗試到指定args來性能調試SOEM: args.PrintableArea.IsEmpty:假 args.PrintableArea.Height:1024 args.PrintableArea.Width:784 args.PageVisual。可見性:可見 應用程序在試圖打印時凍結60秒(我認爲這個異步調用真的是異步嗎?)也是關注的。 – enforge 2010-10-21 19:49:12