int AddGridBody(Grid grid, Size printableArea, List <Column> colNodes, Size itemsPanelMaxSize, int ix, Grid pagePanel, Panel itemsPanel) { List <object> ls = ItemsSource.Cast <object>().ToList(); for (int j = ix; j < ls.Count; j++) { //手动分页 object currentItem = ls[j]; PrintingEventArgs args = new PrintingEventArgs(); args.DataContext = currentItem; // OnBeginBuildReportItem(args); grid.RowDefinitions.Add(new RowDefinition()); // create row. Set data context. for (int i = 0; i < colNodes.Count; i++) { Column col = colNodes[i]; TextBlock tb = new TextBlock() { Margin = CellPadding, TextAlignment = col.TextAlignment }; tb.FontSize = this.FontSize; if (col.DataMember != null) { tb.SetBinding(TextBlock.TextProperty, col.DataMember); } tb.DataContext = currentItem; tb.TextWrapping = this.TextWrap; tb.VerticalAlignment = VerticalAlignment.Center; grid.Children.Add(tb); Grid.SetRow(tb, grid.RowDefinitions.Count - 1); Grid.SetColumn(tb, i); } grid.Measure(printableArea); if (grid.DesiredSize.Height > itemsPanelMaxSize.Height) { grid.RowDefinitions.RemoveAt(grid.RowDefinitions.Count - 1); int n = colNodes.Count; for (int i = 0; i < n; i++) { grid.Children.RemoveAt(grid.Children.Count - 1); } return(j); } } return(ls.Count); }
private static void Hp_Printing(object sender, PrintingEventArgs e) { var printer = sender as Printer; Console.WriteLine($"{printer?.Name} Printing page N{e.CurrentPage}"); }