2015-09-25 34 views
0

我目前有一個包含多個不同網格的應用程序,每個網格代表需要打印的不同網頁。我能夠構建一個固定的文檔並打印出所有內容,直到我需要向其中一個網格添加圖表爲止。現在在這些網格中的兩個網格上收集用戶數據,然後使用WPF圖表工具包將其繪製到圖表中。當我嘗試克隆包含圖表的網格並嘗試將它們添加到修復文檔中時,我得到一個由代碼行觸發的堆棧溢出執行 String gridXaml = XamlWriter.Save(GridName);試圖打印包含WPF圖表工具包圖表但獲取堆棧溢出異常的多網格WPF

private void Print_Click(object sender, RoutedEventArgs e) 
    { 
     PrintDialog pd = new PrintDialog(); 
     pd.UserPageRangeEnabled = true; 

     document = new FixedDocument(); 

     AddPage(MPEval); 
     AddPage(QC); 
     AddPage(ID); 
     AddPage(AWS); 
     AddPage(GAR); 
     AddPage(SA); 
     AddPage(UAG); 
     AddPage(LCD); 
     AddPage(RFVolume); 
     AddPage(RFSurface); 

     if (pd.ShowDialog() == true) 
     { 

      DocumentPaginator paginator = document.DocumentPaginator; 

      if (pd.PageRangeSelection == PageRangeSelection.UserPages) 
      { 
       paginator = new PageRangeDocumentPaginator(document.DocumentPaginator, pd.PageRange); 
      } 
      pd.PrintDocument(paginator, MPSite.Text); 

     } 
    } 

    private void AddPage(Grid gridName) 
    { 
     var pageSize = new Size(8.26 * 96, 11.69 * 96); // A4 page, at 96 dpi 
     document.DocumentPaginator.PageSize = pageSize; 
     // Create FixedPage 
     var fixedPage = new FixedPage(); 
     fixedPage.Width = pageSize.Width; 
     fixedPage.Height = pageSize.Height; 
     // Add visual, measure/arrange page. 
     String gridXaml = XamlWriter.Save(gridName); 
     StringReader stringReader = new StringReader(gridXaml); 
     XmlReader xmlReader = XmlTextReader.Create(stringReader, new XmlReaderSettings()); 
     Grid tempGrid = (Grid)XamlReader.Load(xmlReader); 
     fixedPage.Children.Add((UIElement)tempGrid); 
     fixedPage.Measure(pageSize); 
     fixedPage.Arrange(new Rect(new Point(), pageSize)); 
     fixedPage.UpdateLayout(); 

     // Add page to document 
     var pageContent = new PageContent(); 
     ((IAddChild)pageContent).AddChild(fixedPage); 
     document.Pages.Add(pageContent); 
    } 

任何人都可以請點我如何能夠將這些添加到我的固定文件或讓我知道,如果我已經進入了死衚衕,需要走另一條路線的正確方向。任何幫助是極大的讚賞。

謝謝

瑞安

回答

0

你可以看看,看看這是否會爲你工作:

System.Xaml.XamlServices.Save(GridName); 

您所遇到的問題是由於一個遞歸調用。

+0

改變了例外,「類型‘System.Xaml.XamlObjectReaderException’未處理的異常發生在System.Xaml.dll」我將不得不考慮這一例外,看看我是否可以解決這一個。感謝您的快速響應。 –