2009-03-02 9 views
0

J'utilise un document FixedForm WPF avec liaison de données pour un rapport de facture simple. Fonctionne parfaitement lorsqu'il est vu dans le logiciel lui-même.Imprimer FixedDocument par programme

Mais je veux imprimer une série de factures en un clic. Le code suivant fonctionne parfaitement (rapide et sale, il suffit de charger une facture une par une directement dans le viewmodel, à des fins de test) lorsque je choisis l'éditeur XPS, bu échoue à imprimer correctement lors de l'impression sur une vraie imprimante. Je ne vois rien des données liées au rapport. Tous les éléments graphiques tels que les lignes sont là, mais pas de données. (Quand j'imprime, avec le même bouton, à l'imprimante d'imprimeur de xps, toutes les données sont présentes, et correctes ...)

Des idées?

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); 
       } 
      } 
     } 
    } 

Répondre

1

mmkay, donc j'ai trouvé la réponse moi-même ici :)

This helped me (Quelqu'un une idée de ce que la 'raison' est derrière Bug?)

PS: Dans un FlowDocument, je fais l'expérience le même problème, et n'ont pas été en mesure de le résoudre là. Des idées?