繰り返しテーブルの列ヘッダーを使用してWPFでFlowdocumentテーブルを印刷するにはどうすればよいですか?WPFでFlowdocumentテーブルを再現可能なテーブル列ヘッダーで印刷できます
私はこれを見ました[http://www.codeproject.com/KB/WPF/PimpedDocumentPaginator.aspx]それは動作しません。
繰り返しテーブルの列ヘッダーを使用してWPFでFlowdocumentテーブルを印刷するにはどうすればよいですか?WPFでFlowdocumentテーブルを再現可能なテーブル列ヘッダーで印刷できます
私はこれを見ました[http://www.codeproject.com/KB/WPF/PimpedDocumentPaginator.aspx]それは動作しません。
基本的に、テキストの段落を折り返すのと同じ方法で、文書を改ページする必要があります。次の行が収まるかどうかを確認し、そうでなければ改ページし、各ページを表ヘッダーで開始し、ページがいっぱいになるまで表の行を追加し続ける。
残念ながら、ページネイターの誰もこれを行いません。
は、参照CodeProjectの持ついくつかの問題がありますが、それはほとんど動作し、私は次の変更の成功があった:GETPAGEで
、単にコンソールを参照する4行を削除します。
定義クラスではpublic static Size Subtract(Size s1, Size s2)
{
return new Size(s1.Width - s2.Width, s1.Height - s2.Height);
}
を追加し、ボタンのクリックでそれを呼び出すために、独自のコードでは、ContentSizeはその後
return Subtract(PageSize, new Size(
Margins.Left + Margins.Right,
Margins.Top + Margins.Bottom + HeaderHeight + FooterHeight));
に行くようなものに変更します - 私はdidnの彼のクラス名のように:)
PrintDialog printDialog = new PrintDialog();
printDialog.PrintTicket.PageOrientation = PageOrientation.Landscape;
if (true == printDialog.ShowDialog())
{
MyPaginator.Definition d = new MyPaginator.Definition
{
Header = (c, b, n) => c.DrawRectangle(Brushes.Black, null, b),
Margins = new Thickness(48), // 1/2 inch all around
PageSize = new Size(flowDocument.PageWidth, flowDocument.PageHeight),
};
DocumentPaginator s = new MyPaginator(flowDocument, d);
printDialog.PrintDocument(s, "Print Job Title");
}
私の場合、私はフッターは必要ありませんでしたが、そのヘッダーデリゲートそれのようなもの)は必須です。 MarginsとPageSizeはデフォルトになりますが、私は異なった値を求めました。
最後に、TableCellの段落定義にKeepTogether = true
を追加する必要があることが判明しました。
これを試してみてください:WPF Reports
これはヘッダー/フッターをサポートしています。 幸運
また、私はViewとPrintの間でTextAlignmentの設定を失っていました。このリンクの提案は私を修正しました:[FlowDocument Text Alignment](http://social.msdn.microsoft.com/Forums/en-US)/wpf/thread/a8a7b9af-2487-4041-af4d-68752d249b2b /) - 私のコードを減らしました。 –
残念ながら、これは何もしません。 'RepeatTableHeaders = true'を' Definition'に追加すると思いましたが、私のテーブルで何も繰り返されません。 – ygoe