Печать FixedDocument программно
Я использую WPF FixedDocument с привязкой данных для простого отчета по счетам. Прекрасно работает, если смотреть внутрь самой программы.
Но я хочу напечатать серию счетов в один клик. Следующий код работает идеально (быстро и просто, просто загружая один за другим счет-фактуру непосредственно в viewmodel, для целей тестирования), когда я выбираю средство записи 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 ответ
mmkay, так что я нашел ответ сам здесь:)
Это помогло мне (кто-нибудь знает, в чем причина? Ошибка?)
ПС: В потоковом документе я столкнулся с той же проблемой и не смог ее там решить. Есть идеи?