2009-11-10 17 views
8

Sto usando C# per creare un FlowDocument e riempirlo con i dati all'interno di una tabella.FlowDocument Force a PageBreak (BreakPageBefore)

Esempio:

FlowDocument flowDoc = new FlowDocument(); 
Table table1 = new Table(); 
flowDoc.Blocks.Add(table1); 

table1.RowGroups.Add(new TableRowGroup()); 
table1.RowGroups[0].Rows.Add(new TableRow()); 
TableRow currentRow = table1.RowGroups[0].Rows[0]; 
table1.RowGroups[0].Rows.Add(new TableRow()); 

currentRow = table1.RowGroups[0].Rows[0]; 
currentRow.Cells.Add(new TableCell(new Paragraph(new Run("Report")))); 

voglio essere in grado di forzare un'interruzione di pagina dopo ogni sezione '' di dati. Ho trovato BreakPageBefore ma non riesco a capire come forzare un'interruzione di pagina.

Qualsiasi esempio sarebbe fantastico!

Grazie.

risposta

14

Se ho capito bene che si vuole fare questo:

Section section = new Section(); 
section.BreakPageBefore = true; 
section.Blocks.Add(table1); 
flowDoc.Blocks.Add(section); 

Se si vuole rompere all'interno di una tabella vi suggerisco che sarebbe meglio fare una nuova tabella.

+0

Non sono sicuro che questo è quello che stavo cercando. Volevo un semplice tipo di oggetto PageBreak. TableData .. TableData .. TableData ... ECC ... Se questo è quello che sto cercando, ho perso e Ci può spiegare per favore? Molte grazie. –

+0

Suona come si desidera avviare una nuova tabella per ogni sezione come suggerisce Martin, ad esempio ... .... –

+0

Penso che Ray descritto in XAML sia il modo migliore. Ogni tipo di blocco ha la proprietà PageBreakBefore che è possibile utilizzare per dire a FlowDocument che dovrebbe interrompersi. Penso che non ci sia altro modo. Finora non ho trovato qualcosa come un tipo di PageBreak che potrebbe esplicitamente fare un'interruzione di pagina. – martin