2014-02-13 54 views
0

我正在使用PrintDocument實施silverlight印刷。我的用戶界面生成運行時使用XamlReader其解析xaml我已經存儲在數據庫。Silverlight多頁印刷

這裏是代碼:

     string str = sb.ToString(); 
         newUI = XamlReader.Load(sb.ToString()) as FrameworkElement; 
         newUI.DataContext = ReportData; 
         grdPreviewArea.Children.Add(newUI); 
         grdPreviewArea.Height = pageHeight; 
         grdPreviewArea.Width = pageWidth; 
         Grid.SetColumn(newUI, 1); 
         Grid.SetRow(newUI, 1); 

現在打印,我在我的打印事件句柄設置newUIe.PageVisual。 如果呈現的用戶界面適合單個頁面,這可以正常工作,但如果它不適合單個頁面,則無法打印第二頁。

回答

1
  • 首先,你需要找出多少頁需要

    昏暗pagesNeeded爲整數= Math.Ceiling(gridHeight/pageHeight)//獲取的頁數需要

  • 然後,一旦第一頁已發送到打印機,您需要將該數據移出視圖並將新數據放入視圖中以便打印。我通過將整個數據集轉換爲圖像/ UI元素來做到這一點,然後我可以相應地調整Y值,以在屏幕上顯示下一組所需數據。

    transformGroup.Children.Add(新TranslateTransform(){隨着= .Y - (PageIndex的* pageHeight)})

  • 然後一旦達到所需要的頁數,告訴打印機停止

    If pagesLeft <= 0 Then 
         e.HasMorePages = False 
         Exit Sub 
        Else 
         e.HasMorePages = True 
        End If 
    

或者如果這是太多的工作,你可以只是簡單地通過轉換爲UI元素擴展所有的筆記,以適應屏幕上再次可能。

檢查OU t此鏈接轉換爲UI元素。

http://www.codeproject.com/Tips/248553/Silverlight-converting-to-image-and-printing-an-UI

希望這有助於