Печать FixedDocument программно - PullRequest
0 голосов
/ 02 марта 2009

Я использую фиксированный документ WPF с привязкой данных для простого отчета по счетам. Прекрасно работает, если смотреть внутрь самого программного обеспечения.

Но я хочу напечатать серию счетов в один клик. Следующий код работает идеально (быстро и просто, просто загружая один за другим счет-фактуру непосредственно в 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 Ответ

1 голос
/ 02 марта 2009

ммкай, поэтому я сам нашел ответ здесь:)

Это помогло мне (Кто-нибудь знает, в чем причина? Ошибка?)

PS: В документообороте потока я испытываю ту же проблему и не могу решить ее там. Есть идеи?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...