WPF-ビジュアルからではないXPSドキュメントの作成の例
-
19-09-2019 - |
質問
RDLC/SSRSを伴わないレポート/印刷ソリューションを探しています。 XPSをサポートしていることを知っているDocumentViewerを使用したいと思います。 XPSにVisualを使用する多くの例を見つけましたが、ラベル、リストボックス、グリッドなどのさまざまなコントロールを備えた既存のWPFページを撮影できる例は多くありません。それをXPSドキュメントに作成します。 XAMLページ全体を撮影してXPSを作成するコードの例はありますか?
解決
些細なことではありません。ここでの基本的な問題は、XPSが固定ページを表していることです。既存のWPFページは、必ずしもドキュメント上のページに変換されるわけではありません。レポートがページに合わない場合、レポートはどのように分割されますか?この情報が必要です。
あなたができることは、フロードキュメントとしてレポートを作成することです(参照 http://msdn.microsoft.com/en-us/library/aa970909.aspx)。これにより、.NETフレームワークに、レポートをページングする方法に関する十分な情報が得られます。
FlowDocument flowDocument;
// load, populate your flowDocument here
XpsDocument xpsDocument = new XpsDocument("filename.xps", FileAccess.ReadWrite);
XpsDocumentWriter writer = XpsDocument.CreateXpsDocumentWriter(xpsDocument);
writer.Write(((IDocumentPaginatorSource)flowDocument).DocumentPaginator);
できます。 (C#BookのPro WPFからリフトしたコード)。
他のヒント
通常、WPFページにはルートUI要素があります。グリッドは特定のタイプのビジュアルであるため(「継承階層」パート @を参照してくださいhttp://msdn.microsoft.com/en-us/library/system.windows.controls.grid.aspx 詳細については、他のビジュアルと同様にそのルートグリッド要素をXPSに記述するだけです。そして、すべての埋め込まれたコントロールは、XPSドキュメントに自動的に書き込まれます。