グリーティング、 WPFでの印刷に問題があります。 私はフロードキュメントを作成し、そのフロードキュメントにいくつかのコントロールを追加しています。 印刷プレビューは正常に動作し、印刷プレビューウィンドウからの印刷に問題はありません。 印刷プレビューなしでプリンタに直接印刷するときに問題が発生します。しかし、もっと驚くべきことに、XPS Document Writerをプリンタとして使用すると、はすべて正常です。物理プリンタを使用すると、フロードキュメントの一部のコントロールが表示されません。 事前のおかげでWPF印刷フロードキュメント
答えて
XPS Documentは、私は一つのことに気づいた問題
せずに印刷することができます。 ヒント:表示されていないコントロールは、私はいくつかのデータを結合していますコントロールですので、結論はということですがバインディングは機能しません。ドキュメントをプリンタに送信する前にバインディングが実行されていない場合がありますか?
Peter、Stackoverflowの使い方のヒント - 情報を追加する場合は、元の質問を編集し、「回答」は投稿しないでください。一般的に、特定の回答に返答したい場合は、コメントを使用してください(ただし、あなたがまだできない場合を除きます)。 – Murph
ok、今から私はチップにお礼を言います –
メモする重要なこと:物理プリンタに直接印刷する場合でもXpsDocumentWriterを使用できます。 .xpsファイルを作成していないからといって、私がやった間違いを避けてください!
とにかく - 私はこの同じ問題を抱えており、DoEvents()
のハックのどれも動作していないようです。私はまた、最初にそれらを使用しなければならないことについて特に満足していませんでした。私の状況では、いくつかのデータバインドされたコントロールはうまくいきましたが、他のもの(ネストされたUserControls)はうまくいきませんでした。あたかも1つの 'レベル'しかデータバインドされておらず、残りの部分はDoEvents()のハックでもバインドされないようです。
解決策は簡単でした。このようにXpsDocumentWriterを使用します。どの物理プリンタがインストールされているかを選択できるダイアログが開きます。
// 8.5 x 11 paper
Size sz = new Size(96 * 8.5, 96 * 11);
// create your visual (this is a WPF UserControl)
var template = new PackingSlipTemplate()
{
DataContext = new PackingSlipViewModel(order)
};
// arrange
template.Measure(sz);
template.Arrange(new Rect(sz));
template.UpdateLayout();
// print to XpsDocumentWriter
// this will open a dialog and you can print to any installed printer
// not just a 'virtual' .xps file
PrintDocumentImageableArea area = null;
XpsDocumentWriter xps = PrintQueue.CreateXpsDocumentWriter(ref area,);
xps.Write(template);
私はPrinting - found through Google Booksにその章と「Programming WPF」に関するOReilly帳は非常に有用であることが判明。
印刷ダイアログが表示されないようにするには、デフォルトのプリンタに直接印刷する場合は、次の操作を行います。 (私の場合、アプリケーションは倉庫環境で梱包用紙を印刷することです - 毎回ダイアログが表示されることはありません)。
var template = new PackingSlipTemplate()
{
DataContext = new PackingSlipViewModel(orders.Single())
};
// arrange
template.Measure(sz);
template.Arrange(new Rect(sz));
template.UpdateLayout();
LocalPrintServer localPrintServer = new LocalPrintServer();
var defaultPrintQueue = localPrintServer.DefaultPrintQueue;
XpsDocumentWriter xps = PrintQueue.CreateXpsDocumentWriter(defaultPrintQueue);
xps.Write(template, defaultPrinter.DefaultPrintTicket);
同様の問題がありました。問題を修正しないでください。 –
- 1. wpf印刷/印刷プレビューusercontrol
- 2. WPFで印刷
- 3. 複数のフロードキュメントを印刷するprintbatchを作成する
- 4. WPF BitmapImageの印刷
- 5. WPF印刷の問題
- 6. フロードキュメントを使用してPrintDialogで印刷方向を設定する
- 7. WPFから非常に遅い印刷
- 8. WPFアプリケーションからMigraDoc文書を印刷
- 9. WPF WebBrowserの内容を印刷する
- 10. WPF印刷FlowDocumentがセンタリングしない
- 11. 大きなWPFユーザーコントロールの印刷
- 12. WPFページに合わせて印刷
- 13. WPFウィンドウのスタックパネルの印刷方法
- 14. WPF Gridページを印刷するには?
- 15. WPFで複数ページを印刷する
- 16. GridLineなしでWPFグリッドを印刷
- 17. WPF - 同じページに内容を印刷
- 18. 印刷したい印刷
- 19. 指定された実行フロードキュメントwpfをポイント
- 20. 印刷、変更、印刷Bash変数
- 21. UWP印刷:FontFamily、印刷の問題
- 22. Excelの印刷プレビュー - >印刷
- 23. Clojure印刷機能:pr対印刷
- 24. 同期PDF印刷と標準印刷
- 25. 印刷
- 26. 印刷
- 27. 印刷
- 28. 印刷
- 29. 印刷設定(Asposeが生成された)でWPFからWord文書を印刷
- 30. WPFビジュアルを含むイメージを印刷する
挨拶、 私が解決したproblem.Iが結合してプリンタにドキュメントを送信すると、非同期操作していることがわかりました。そこで私はBeaStolnitzの記事に基づいてWPFでAppliaction.DoEvents()を作成しました。これで問題は解決しました http://bea.stollnitz.com/blog/index.php?s=doevents –
上記のコメントのリンクは機能しなくなりましたが、リダイレクト先のサイトを掘り下げてDoEventsアプローチの記事:http://www.zagstudio.com/blog/493#.UegOCo1dyaI –