C# 试图打印包含WPF图表工具包图表的多网格WPF,但出现堆栈溢出异常

C# 试图打印包含WPF图表工具包图表的多网格WPF,但出现堆栈溢出异常,c#,wpf,printing,charts,C#,Wpf,Printing,Charts,我目前有一个应用程序,它包含几个不同的网格,每个网格代表需要打印的不同页面。我能够构建一个固定的文档并打印出所有内容,直到我需要将图表添加到其中一个网格。现在,它在其中两个网格上收集用户数据,然后使用WPF图表工具包将这些数据绘制到图表中。当我尝试克隆包含图表的网格并尝试将它们添加到修复文档时,我会得到一个堆栈溢出执行选项,该选项由代码行触发 字符串gridXaml=XamlWriter.SaveGridName private void Print_Click(object sende

我目前有一个应用程序,它包含几个不同的网格,每个网格代表需要打印的不同页面。我能够构建一个固定的文档并打印出所有内容,直到我需要将图表添加到其中一个网格。现在,它在其中两个网格上收集用户数据,然后使用WPF图表工具包将这些数据绘制到图表中。当我尝试克隆包含图表的网格并尝试将它们添加到修复文档时,我会得到一个堆栈溢出执行选项,该选项由代码行触发 字符串gridXaml=XamlWriter.SaveGridName

    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);
    }
有人能告诉我如何将这些添加到我的固定文档中的正确方向吗?或者,如果我遇到了死胡同,需要走另一条路,请告诉我。非常感谢您的帮助

谢谢,


Ryan

您可以看看这是否适合您:

 System.Xaml.XamlServices.Save(GridName);

您遇到的问题是由于递归调用造成的

这将异常更改为System.Xaml.XamlObjectReaderException类型的未处理异常,发生在System.Xaml.dll中。我必须查看此异常,看看是否可以解决此异常。谢谢你的快速回复。