Le problème est probablement avec la largeur de votre grille en relation avec la taille de page de XPSDocumentWriter. WPF écrira dans le document l'élément que vous fournissez tel quel. Cela signifie qu'il ne sera pas adapté au contenu de la page.
En supposant que votre document est la taille correcte (lets lettre suppose), vous devez déterminer la zone imprimable du document et appliquer une RenderTransform sur la grille avant de l'écrire dans le XpsDocumentWriter
Le code pour le 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: modifié le code de sorte que le ScaleX, et le point de scaleY à la quantité nécessaire pour rendre la grille adapter complètement dans le XpsDocument
Quel genre de résultats obtenez-vous? Combien de colonnes y a-t-il au total? Combien apparaissent par page? Pouvez-vous produire un petit jeu de code qui reproduit l'effet? –
Joel, dans le fichier XPS, la moitié de ma grille de données s'affiche.Mais je veux toutes mes colonnes et lignes (par exemple: j'ai 20 colonnes, mais xps en montre 10). –