Пример #1
0
        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);
        }
Пример #2
0
        private static void Hp_Printing(object sender, PrintingEventArgs e)
        {
            var printer = sender as Printer;

            Console.WriteLine($"{printer?.Name} Printing page N{e.CurrentPage}");
        }