【发布时间】:2020-07-11 17:04:20
【问题描述】:
我正在使用windows-community-toolkit 的PrintHelper 扩展名并打印一些数据。问题是当数据很大时它与页面重叠,我找不到动态添加新页面并将数据转移到下一页的方法。有什么办法吗?
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
{
}
}
结果如下所示。可以看出,如果数据很大,则不会打印,因为不会自动添加下一页。我可以这样做是手动循环数据并准确定义要在一页上打印多少行以及在下一页上打印多少行,但这不是我想要的,因为如果某些单元格数据很大,那么我的逻辑将不起作用。
【问题讨论】:
标签: c# printing uwp windows-community-toolkit