Domanda

Voglio mostrare il contenuto di Datagrid (righe, colonne) nel documento XPS. Ho 20 colonne. Quando ho inviato Datagrid a XPS con il metodo XPSDocumentWriter.Write, mostra solo alcune colonne non tutte. Come posso mostrare tutte le colonne e le righe in xps (come Xceed datagrid xps export)

Thx

È stato utile?

Soluzione

Il problema è probabilmente con la larghezza della griglia in relazione alla dimensione della pagina di XPSDocumentWriter.

WPF scriverà nel documento l'elemento fornito così com'è. Ciò significa che non verrà ridimensionato in alcun modo per adattarsi al contenuto della pagina.

Supponendo che il documento abbia le dimensioni corrette (supponiamo una lettera), è necessario determinare l'area stampabile del documento e applicare un RenderTransform alla griglia prima di scriverlo in XPSDocumentWriter

Il codice per farlo sarebbe qualcosa del tipo:

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: modificato il codice in modo che sia ScaleX che ScaleY puntino all'importo richiesto per adattare completamente la griglia in XpsDocument

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top