Я использую PrintHelper
расширение windows-community-toolkit
и печатаю некоторые данные. Проблема в том, что когда данные большие, они перекрывают страницу, и я не могу найти способ динамически добавить новую страницу и перенести данные на следующую страницу. Есть способ?
public PrintHelper PrintHelper;
public void StartPrint(Panel container, List<CompanyDetail> PrintSampleItems)
{
try
{
PrintHelper = new PrintHelper(container);
PrintHelper.OnPrintSucceeded += PrintHelper_OnPrintSucceeded;
PrintHelper.OnPrintFailed += PrintHelper_OnPrintFailed;
PrintHelper.OnPreviewPagesCreated += PrintHelperOnOnPreviewPagesCreated;
var pageNumber = 0;
var data = PrintSampleItems;
var grid = new Grid();
grid.RowDefinitions.Add(new RowDefinition() {Height = GridLength.Auto});
grid.RowDefinitions.Add(new RowDefinition() {Height = new GridLength(1, GridUnitType.Star)});
grid.RowDefinitions.Add(new RowDefinition() {Height = GridLength.Auto});
// Static header
var header = new TextBlock
{
Text = "Departments Print",
Margin = new Thickness(0, 0, 0, 20),
HorizontalAlignment = HorizontalAlignment.Center,
FontSize = 18,
FontWeight = FontWeights.Bold
};
Grid.SetRow(header, 0);
grid.Children.Add(header);
var dataGrid = new CompanyDetailReportTemplateControl
{
HorizontalAlignment = HorizontalAlignment.Center
};
dataGrid.SetValues(PrintSampleItems);
Grid.SetRow(dataGrid, 1);
grid.Children.Add(dataGrid);
// Footer with page number
pageNumber++;
var footer = new TextBlock
{
Text = $"Page [ {pageNumber} ]", Margin = new Thickness(0, 20, 0, 0),
HorizontalAlignment = HorizontalAlignment.Right
};
Grid.SetRow(footer, 2);
grid.Children.Add(footer);
PrintHelper.AddFrameworkElementToPrint(grid);
}
catch
{
}
}
Результат выглядит так. Как видно, если данные большие, они не печатаются, потому что следующая страница не добавляется автоматически. Я могу вручную зацикливать данные и точно определять, сколько строк нужно напечатать на одной странице и сколько на следующей, но это не то, что я хочу, потому что, если некоторые данные ячеек велики, мои logi c не будут работать.
Распечатать изображение