【发布时间】:2009-07-17 00:00:04
【问题描述】:
我正在使用带有数据绑定的 WPF FixedDocument 来生成简单的发票报告。在软件本身内部查看时效果完美。
但我想一键打印一系列发票。当我选择 XPS 编写器时,以下代码完美运行(快速'n 脏,只是在视图模型中直接一张一张地加载发票,用于测试目的),但打印到真实打印机时无法正确打印。我看不到任何绑定到报告的数据。线条等所有图形元素都在那里,但没有数据。 (当我用相同的按钮打印到 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);
}
}
}
}
【问题讨论】: