XPS ドキュメントにデータグリッド コンテンツ (行、列) を表示したいのですが、20 列あります。XPSDocumentWriter.Writeメソッドを使用してデータグリッドをXPSに送信すると、すべてではなく一部の列が表示されます.xpsですべての列と行を表示するにはどうすればよいですか(Xceed datagrid xps exportingのように)
どうも
XPS ドキュメントにデータグリッド コンテンツ (行、列) を表示したいのですが、20 列あります。XPSDocumentWriter.Writeメソッドを使用してデータグリッドをXPSに送信すると、すべてではなく一部の列が表示されます.xpsですべての列と行を表示するにはどうすればよいですか(Xceed datagrid xps exportingのように)
どうも
問題はおそらく、XPSDocumentWriter のページサイズに関連するグリッドの幅にあります。
WPF は、指定した要素をそのまま Document に書き込みます。つまり、ページのコンテンツに合わせてサイズが変更されることはありません。
ドキュメントが正しいサイズであると仮定すると (文字を想定してみましょう)、ドキュメントの印刷可能領域を決定し、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 に完全に収まるようにするために必要な量を指すようにしました。