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