WPF - 克隆对象并将其放入 XPS 文档时出错

发布于 2024-08-15 18:46:01 字数 869 浏览 8 评论 0原文

底线是:我试图避免使用 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 渲染中对象数据才会丢失。

帮助。

Here's the bottom line: I'm trying to avoid using RDLC/SSRS and instead create XPS files from my XAML.

I've combined pieces of code from various articles here and I am (1) cloning the XAML objects I need from my page and (2) passing those to a new page in an XPS object

This process seems to work just fine with non data-bound objects that I can still modify with code. Here is a quick example, showing how I'm cloning an existing label:

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);

However, when I apply the same code to objects that contain a DataContext, it does not render the content. It will render the object itself, like it might show the outline of a listbox or one empty column of a datagrid, but it will not show any of the other data. I have confirmed that the page I'm pulling objects from renders propely, it is only in the cloning and the XPS rendering that the object data is lost.

Help.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文