WPF toolkit datagrid
-
03-07-2019 - |
Question
Je souhaite afficher le contenu de la grille de données (lignes, colonnes) dans un document XPS. J'ai 20 colonnes. Lorsque j’envoyais DataGrid à XPS avec la méthode XPSDocumentWriter.Write, il ne montrait que certaines colonnes. Comment puis-je afficher toutes les colonnes et toutes les lignes en xps (comme Xceed datagrid xps exportant)
Thx
La solution
Le problème vient probablement de la largeur de votre grille par rapport à la taille de la page de XPSDocumentWriter.
WPF écrira dans le document l'élément que vous fournissez tel quel. Cela signifie qu'il ne sera en aucun cas redimensionné pour s'adapter au contenu de la page.
En supposant que la taille de votre document soit correcte (supposons une lettre), vous devez déterminer la zone imprimable du document et appliquer un RenderTransform à la grille avant de l'écrire dans XPSDocumentWriter
Le code à faire serait quelque chose comme:
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);
EDIT: le code a été modifié de sorte que ScaleX et ScaleY indiquent le montant requis pour que la grille s'adapte parfaitement au document XpsDocument