2012-01-16 25 views
0

フロー・ドキュメントの印刷を試みています。 foreach内でドキュメントを印刷し、パススルーごとに名前を変更します。私の問題は、名前を2番目の/ etcを変更しないで初めて印刷した後です。ループの時間。どうしてこれなの?ここにコードがありますフロー・ドキュメントの印刷に関する問題

PrintDialog p = new PrintDialog(); 
       if (p.ShowDialog().Value == true) 
       { 
        foreach (CustCnt c in customerContacts) 
        { 
         ((TextBlock)doc.FindName("Name")).Text = c.Name; 

         SelectCOADelivery("FaxLabel", "FaxNumber", c.CheckBox17, c.FaxNum, doc); 
         SelectCOADelivery("EmailLabel", "Email", c.CheckBox16, c.EMailAddress, doc); 
         SelectCOADelivery("LoadLabel", null, c.CheckBox18, null, doc); 

         ((TextBlock)doc.FindName("FaxNumber")).Text = c.FaxNum; 
         ((TextBlock)doc.FindName("Email")).Text = c.EMailAddress; 
         p.PrintDocument(((IDocumentPaginatorSource)doc).DocumentPaginator, "Baker Data"); 
        } 
       } 

答えて

2

私は、あなたのレイアウトがレンダリングされる前に文書を印刷しようとしていると思います。ドキュメントを印刷する前に

UpdateLayout(); 

と呼んでください。

+0

ドキュメントを印刷する前に、どのように 'UpdateLayout'を呼びますか?ドキュメントをFlowDocumentビューア(「FlowDocumentScrollViewer」)の1つに表示する必要がありますか? – Dennis

+0

何かを印刷したいときは、コントロールにPrintDialogを渡す必要があります。印刷するコントロールは、Paginatorに渡す前に表示およびレンダリングする必要があります。ユーザコントロールを更新する人もいますが、まだレンダリングされていない人もいます。上記の例では 'p.PrintDocument((IDocumentPaginatorSource)doc).DocumentPaginator、" Baker Data ")の直前に' UpdateLayout() 'を呼び出すでしょう。 – MyKuLLSKI

+0

ありがとう@MyKuLLSKI 。 'FlowDocument'を' XpsDocument'に出力するのが難しいので、私は尋ねます。私はそれがドキュメントがレンダリングされていないので確信していますが、どのように/どこで 'UpdateLayout()'を呼び出すのか分かりません。参照:http://stackoverflow.com/questions/9447338/printing-blockuicontainer-to-xpsdocument-fixeddocument – Dennis

関連する問題