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

Était-ce utile?

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top