以编程方式打印FixedDocument

时间:2009-03-02 07:12:28

标签: wpf printing

我正在使用带有数据绑定的WPF FixedDocument来处理简单的发票报告。当在软件内部查看时,它的工作非常完美。

但我想一键打印一系列发票。以下代码工作正常(快速'非常脏,只是在视图模型中直接加载发票,用于测试目的)当我选择XPS编写器时,无法在打印到真实打印机时正确打印。我看不到绑定到报告的数据。所有图形元素(如行)都在那里,但没有数据。 (当我使用相同的按钮打印到de xps writer打印机时,所有数据都存在,并且正确...)

任何想法?

    private void ExecutePrintCommand(object sender, ExecutedRoutedEventArgs args)
    {
        var invs = args.Parameter as IList<object>;
        using (CompuDataContext db = new CompuDataContext())
        {
            DataLoadOptions dl = new DataLoadOptions();
            dl.LoadWith<Invoice>(f => f.Invoicelines);
            db.LoadOptions = dl;

            ReportViewer viewer = new ReportViewer();
            PrintDialog dlg = new PrintDialog();
            if (dlg.ShowDialog() == true)
            {
                PrintQueue q = dlg.PrintQueue;
                foreach (var o in invs)
                {

                    InvoiceListDisplay inv = o as InvoiceListDisplay;
                    Invoice invoice = db.Invoices.Single(f => f.Id == inv.Id);

                    viewer.DataContext = new InvoicePrintViewModel(invoice);

                    XpsDocumentWriter xpsdw = PrintQueue.CreateXpsDocumentWriter(q);
                    xpsdw.Write(viewer.Document);
                }
            }
        }
    }

1 个答案:

答案 0 :(得分:1)

mmkay,所以我在这里找到答案:)

This helped me(任何人都知道背后的'理由'是什么?Bug?)

PS:在一个flowdocument中,我遇到了同样的问题,并且无法在那里解决它。有什么想法吗?

相关问题