从WPF导出XPS - 只导出一个图像

时间:2015-05-07 10:53:47

标签: c# wpf xaml mvvm xps

我想将内容从WPF应用程序(C#,MVVM)导出到XPS。 我有一堆对象,每个对象都包含一个图像(type = BitmapFrame),使用 source 属性显示:

<Image Source="{Binding BusinessUnit.Picture}" />

所有这些对象都放在名为GraphCanvas的控件上。每张照片都已加载,并在屏幕上正确显示。

使用导出代码时:

            using (var package = Package.Open(saveFileDialog.FileName, FileMode.Create))
            {
                var xpsDocument = new XpsDocument(package);

                var writer = XpsDocument.CreateXpsDocumentWriter(xpsDocument);

                writer.Write(GraphCanvas.ExportCanvas);

                xpsDocument.Close();
            }

除图像外,一切都正确导出。只导出一个图像(在浏览XPS结构时,它在资源文件夹中可用),并且这一个图像用作替换应导出的每个其他图像。

可能导致所有其他图像未导出的原因是什么?

1 个答案:

答案 0 :(得分:0)

我在打印多个页面时遇到了类似的问题,最终我不得不在页面中的每个项目上进行迭代并执行此操作:

fwElement.Arrange(new Rect(new Size(fwElement.ActualWidth, fwElement.ActualHeight)));

由于您只有一个元素,这可能对您有用:

GraphCanvas.ExportCanvas.Measure(GraphCanvas.ExportCanvas.RenderSize);
GraphCanvas.ExportCanvas.Arrange(new Rect(new Size(GraphCanvas.ExportCanvas.ActualWidth, GraphCanvas.ExportCanvas.ActualHeight)));
writer.Write(GraphCanvas.ExportCanvas);