C# 打印包含ListBox或GridView的页面

C# 打印包含ListBox或GridView的页面,c#,windows-8,windows-runtime,windows-store-apps,winrt-xaml,C#,Windows 8,Windows Runtime,Windows Store Apps,Winrt Xaml,打印页面包含RichTextBlock。此RichTextBlock用于包含文本,可以使用以下代码打印。如果页面包含ListBox或GridView,我需要有关如何打印此内容的帮助。是否可以使用RichTextBlock包含ListBox并检测溢出以继续打印?如果您能提供此方面的示例、参考或教程,将不胜感激。谢谢 ---更新 此列表框将包含以下数据: ItemName ItemCode价格数量 ------ ------ ----更新(2) 如何添加页眉和页脚 标题 客户 地址 日期: 订单号

打印页面包含RichTextBlock。此RichTextBlock用于包含文本,可以使用以下代码打印。如果页面包含ListBox或GridView,我需要有关如何打印此内容的帮助。是否可以使用RichTextBlock包含ListBox并检测溢出以继续打印?如果您能提供此方面的示例、参考或教程,将不胜感激。谢谢

---更新
此列表框将包含以下数据:

ItemName ItemCode价格数量

------
------

----更新(2)

如何添加页眉和页脚

标题

客户
地址
日期:
订单号

品牌代码价格数量

PrintDocument document = null; IPrintDocumentSource source = null; List pages = null; FrameworkElement page1; protected event EventHandler pagesCreated; protected const double left = 0.075; protected const double top = 0.03; protected override void OnNavigatedTo(NavigationEventArgs e) { //--- Register to print document = new PrintDocument(); source = document.DocumentSource; //--- handle Document's Events document.Paginate += printDocument_Paginate; document.GetPreviewPage += printDocument_GetPreviewPage; document.AddPages += printDocument_AddPages; PrintManager manager = PrintManager.GetForCurrentView(); manager.PrintTaskRequested += manager_PrintTaskRequested; pages = new List(); PrepareContent(); } PrintDocument文档=空; IPrintDocumentSource=null; 列表页=空; 框架元素第1页; 已创建受保护的事件处理程序页面; 保护常数双左=0.075; 保护常数双层顶部=0.03; 受保护的覆盖无效OnNavigatedTo(NavigationEventArgs e) { //---注册打印 文档=新的打印文档(); source=document.DocumentSource; //---处理文档的事件 document.Paginate+=打印文档_Paginate; document.GetPreviewPage+=打印文档\u GetPreviewPage; document.AddPages+=打印文档\u AddPages; PrintManager=PrintManager.GetForCurrentView(); manager.PrintTaskRequested+=manager\u PrintTaskRequested; pages=新列表(); 准备内容(); } 我的答案是基于我的想法。我已经调整了该示例以支持listbox。查看下面的代码

XAML


C#

受保护的覆盖无效OnNavigatedTo(NavigationEventArgs e)
{
MyLbx.ItemsSource=新列表
{
新项目模型(“项目名称8”、“项目代码10”、180.76、13),
新项目模型(“项目名称19”、“项目代码16”、153.68、14),
新项目模型(“项目名称8”,“项目代码18”,195.71,10),
新项目模型(“项目名称11”、“项目代码16”、112.71、14),
新项目模型(“项目名称5”、“项目代码11”、156.09、18),
新项目模型(“项目名称7”、“项目代码8”、124.38、18),
新项目模型(“项目名称16”、“项目代码16”、129.31、15),
新项目模型(“项目名称13”、“项目代码5”、187.55、19),
新项目模型(“项目名称6”、“项目代码6”、146.10、14),
新项目模型(“项目名称19”、“项目代码5”、154.84、18),
新项目模型(“项目名称15”、“项目代码5”、149.69、18),
新项目模型(“项目名称17”、“项目代码5”、155.39、6),
新项目模型(“项目名称6”、“项目代码14”、119.19、12),
新项目模型(“项目名称14”、“项目代码19”、186.40、19),
新项目模型(“项目名称7”、“项目代码18”、178.30、8),
新项目模型(“项目名称12”,“项目代码17”,105.60,8),
新项目模型(“项目名称5”、“项目代码19”、120.94、9),
新项目模型(“项目名称9”、“项目代码12”、164.13、19),
新项目模型(“项目名称18”、“项目代码15”、119.24、7),
新项目模型(“项目名称16”,“项目代码10”,106.30,16)
};
}
私有异步无效btnPrint\u单击(对象发送方,路由目标)
{
字符串PrintText=“”;
foreach(MyLbx.Items中的ItemModel项)
{
PrintText+=“项目名称:”+Item.ItemName+“\n”;
PrintText+=“项目代码:”+Item.ItemCode+“\n”;
PrintText+=“价格:”+item.Price+“\n”;
PrintText+=“数量:”+项。数量+“\n\n”;
}
等待PrintHelper.ShowPrintUIAsync(printCanvas,PrintText,“PrintedListBox.pdf”);
}
PrintHelper.cs

公共类PrintHelper
{
私有静态画布打印根{get;set;}
私有静态字符串TextToBePrint{get;set;}
私有静态字符串打印文件名{get;set;}
内部静态int currentPreviewPage;
私有静态PrintDocument PrintDocument=null;
私有静态IPrintDocumentSource printDocumentSource=null;
内部静态列表printPreviewPages=新列表();
private const double ApplicationContentMarginLeft=0.075;
private const double ApplicationContentMarginTop=0.03;
私有静态boolshowtext
{
获取{return((int)imageText&(int)DisplayContent.Text)==(int)DisplayContent.Text;}
}
内部静态DisplayContent imageText=DisplayContent.TextAndImages;
请求的私有静态无效PrintTask(PrintManager发件人、PrintTaskRequestedEventArgs e)
{
PrintTask PrintTask=e.Request.CreatePrintTask(PrintingFileName,sourceRequested=>sourceRequested.SetSource(printDocumentSource));
}
私有静态无效寄存器形式打印()
{
//创建打印文档。
printDocument=新的printDocument();
//保存文档源。
printDocumentSource=printDocument.DocumentSource;
//添加创建预览页面的事件处理程序。
printDocument.Paginate+=CreatePrintPreviewPages;
//添加提供指定预览页的事件处理程序。
printDocument.GetPreviewPage+=GetPrintPreviewPage;
//添加一个提供所有最终打印页面的事件处理程序。
printDocument.AddPages+=AddPrintPages;
//创建PrintManager并添加用于打印初始化的处理程序。
PrintManager printMan=PrintManager.GetForCurrentView();
printMan.PrintTaskRequested+=PrintTaskRequested;
}
私有静态void UnregisterForPrinting()
{
//将PrintDocument的实例设置为null。
printDocument=null;
//