質問

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ドキュメントに自動的に書き込まれます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top