我想在 XPS 文档中显示数据网格内容(行、列)。我有 20 列。当我使用 XPSDocumentWriter.Write 方法将数据网格发送到 XPS 时,它只显示一些列而不是全部。我如何在 xps 中显示所有列和行(如 Xceed datagrid xps 导出)
谢谢
我想在 XPS 文档中显示数据网格内容(行、列)。我有 20 列。当我使用 XPSDocumentWriter.Write 方法将数据网格发送到 XPS 时,它只显示一些列而不是全部。我如何在 xps 中显示所有列和行(如 Xceed datagrid xps 导出)
谢谢
问题可能出在与 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 所需的量