这是底线:我试图避免使用RDLC / SSRS,而是从我的XAML创建XPS文件。
我在这里结合了各篇文章中的代码片段,我(1)从我的页面克隆了我需要的XAML对象,(2)将它们传递给XPS对象中的新页面
这个过程似乎可以正常使用非数据绑定对象,我仍然可以使用代码进行修改。这是一个快速示例,显示了我如何克隆现有标签:
pgeIncidentReport newPage = new pgeIncidentReport();
string Xaml = XamlWriter.Save(newPage.lblHeader);
StringReader stringReader = new StringReader(Xaml);
XmlReader xmlReader = XmlReader.Create(stringReader);
System.Windows.Controls.Label newL = System.Windows.Controls.Label)XamlReader.Load(xmlReader);
FixedDocument fixedDoc = new FixedDocument();
PageContent pageContent = new PageContent();
FixedPage fixedPage = new FixedPage();
//Create first page of document
fixedPage.Children.Add(newL);
但是,当我将相同的代码应用于包含DataContext的对象时,它不会呈现内容。它将呈现对象本身,就像它可能显示列表框的轮廓或数据网格的一个空列,但它不会显示任何其他数据。我已经确认我正在从渲染中提取对象的页面,只是在克隆和XPS渲染中,对象数据丢失了。
帮助。