WPFツールキットデータグリッド
-
03-07-2019 - |
質問
XPSドキュメントにデータグリッドコンテンツ(行、列)を表示したい。20列あります。 XPSDocumentWriter.Writeメソッドを使用してdatagridをXPSに送信すると、すべてではなく一部の列のみが表示されます。
Thx
解決
問題はおそらく、XPSDocumentWriterのページサイズに関連したグリッドの幅にあります。
WPFは、指定した要素をドキュメントにそのまま書き込みます。つまり、ページのコンテンツに合わせてスケーリングされることはありません。
ドキュメントが正しいサイズであると仮定すると(レターを想定)、ドキュメントの印刷可能領域を決定し、RenderTransformをグリッドに適用してから、XPSDocumentWriterに書き込む必要があります
それを行うコードは次のようになります:
Grid grd = new Grid();
XpsDocumentWriter wrt = new XpsDocumentWriter();
//Bunch of code to manipulate your grid here
//Now we calculate the scaling required:
double ScaleX = PageWidth / grd.Width; //The page width must be in Device Independent Units
double ScaleY = ScaleX;
grd.RenderTransform = new ScaleTransform(ScaleX, ScaleY);
wrt.Write(grd);
編集: ScaleXとScaleYの両方がグリッドをXpsDocumentに完全に合わせるのに必要な量を指すようにコードを変更しました
所属していません StackOverflow