1

我想在 XPS 文档中显示数据网格内容(行、列)。我有 20 列。当我使用 XPSDocumentWriter.Write 方法将数据网格发送到 XPS 时,它只显示一些列而不是全部。我如何在 xps 中显示所有列和行(如 Xceed datagrid xps 导出)

谢谢

4

1 回答 1

0

问题可能出在与 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 所需的量

于 2009-09-03T17:16:39.870 回答