質問

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に完全に合わせるのに必要な量を指すようにコードを変更しました

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