WPF 分页打印内容

使用wpf实现打印功能,打印内容为自定义的用户控件,绑定数据源。

一、创建一个打印内容类,一个UserControl为一页,PrintPage。

public class PrintPage
{
    /// <summary>
    /// 页面内容
    /// </summary>
    public UserControl PageContent { get;private set; } 

    public PrintPage(UserControl pageContent,object dataContext)
    {
        PageContent = pageContent; 
        pageContent.DataContext = dataContext; 
    } 
}

二、创建一个打印工具类,PrintUtil

 public static class PrintUtil
 {
     /// <summary>
     /// 创建打印的文档
     /// </summary>
     /// <returns></returns>
     public static FixedDocument CreatePrintDocument(this List<PrintPage> pages)
     {
         var fixedDoc = new FixedDocument();
         foreach (var page in pages)
         {
             var pageContent = new PageContent() ;
             var fixedPage = new FixedPage
             {
                 HorizontalAlignment = HorizontalAlignment.Center,
                 VerticalAlignment = VerticalAlignment.Center,
                 Width = 8.27 * 96, //页宽
                 Height =500,// 页高 
             }; 
             fixedPage.Children.Add(page.PageContent);
             ((IAddChild)pageContent).AddChild(fixedPage); 
             fixedDoc.Pages.Add(pageContent); 
         }
         return fixedDoc;
     } 
 }

三、使用,创建一个用户控件Page1View,用来布局打印内容。创建一个Model类(Page1ViewModel)用来指定数据源。

<UserControl x:Class="WpfAppPrint.Page1View"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             Background="White"
             xmlns:local="clr-namespace:WpfAppPrint"
             mc:Ignorable="d" Width="21cm" Height="600"  >
    <Grid Margin="60">
        <TextBlock FontSize="24" Text="{Binding Title}" />
    </Grid>
</UserControl>
    public class Page1ViewModel
    {
        public string Title { get; set; }
    }

四、主窗体使用DocumentViewer来预览打印的内容。

<Window x:Class="WpfAppPrint.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfAppPrint"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Grid>
        <DocumentViewer  x:Name="docViewer"></DocumentViewer>
    </Grid>
</Window>
public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();

        Loaded += (s, e) =>
        {
            //窗体加载事件

            var pageList = new List<PrintPage>
            {
               new PrintPage(new Page1View(),new Page1ViewModel
               {
                   Title = "第一页内容"

                }),
                new PrintPage(new Page1View(),new Page1ViewModel
                {
                     Title = "第二页内容"
                })
            };

            docViewer.Document = pageList.CreatePrintDocument();

        };

    }
}

源码地址:https://download.csdn.net/download/qq_38060581/88991275

  • 9
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: WPF(Windows Presentation Foundation)是一种用于创建Windows应用程序的开发框架,它具有强大的可视化界面设计能力和良好的用户体验。而CSDN(中国最大的IT技术社区)是一个集技术博客、问答社区、资源下载等功能于一体的平台。现在我来解释一下如何在CSDN上实现WPF分页显示和下载的过程。 首先,在CSDN上搜索WPF分页显示的相关内容,我们可以得到关于WPF分页显示的文章和教程,这些文章会介绍如何使用WPF框架实现分页显示的功能,并提供相应的源代码和演示效果。 然后,我们可以根据文章提供的源代码和教程,自己编写实现WPF分页显示功能的代码。在编写代码的过程中,我们需要使用WPF框架提供的控件和功能,例如使用ListView控件展示数据列表,并将分页功能与数据列表进行关联。具体的实现过程需要根据不同的需求和要展示的数据进行调整,可以参考教程和源代码提供的方法进行操作。 最后,在CSDN上下载相关的WPF分页显示代码和示例,我们可以使用CSDN提供的下载功能,直接下载相关的源代码和项目文件。通过下载这些文件,我们可以更便捷地查看和理解WPF分页显示的实现方法,也可以在自己的项目中使用这些代码文件,加快项目的开发进度。 总结一下,通过在CSDN上搜索相关的WPF分页显示的文章和教程,自己编写代码实现分页显示功能,以及在CSDN上下载相关的代码和示例文件,我们可以快速学习和应用WPF分页显示的技术。这样就可以在使用WPF框架的应用程序中实现分页显示的功能,提升用户体验并满足业务需求。 ### 回答2: WPF(Windows Presentation Foundation)是一种用于创建Windows应用程序的开发技术。它提供了一种强大的界面设计和用户体验方案。而CSDN是中国最大的IT技术社区和下载平台,提供了丰富的技术文章、源码、教程以及软件下载等资源。 想要在WPF中实现分页显示CSND下载资源,可以按照以下步骤进行: 1. 首先,需要使用WPF窗体创建一个界面,可以使用Grid或者StackPanel等布局容器来安排界面元素。 2. 在界面上添加一个按钮或者其他控件,用来触发加载CSND下载资源的操作。 3. 当用户点击这个按钮时,可以通过调用CSDN的API接口,获取到下载资源的相关信息,比如文件名、下载链接、文件大小等。 4. 将获取到的资源信息进行分页处理,可以使用自定义的数据结构来存储每页展示的资源数据,比如创建一个资源类,包含文件名、下载链接等属性。 5. 在界面上添加一个分页控件,用于显示每页的资源信息。可以使用ListView或DataGrid等控件来展示资源列表。并将分页控件与资源数据进行绑定,实现动态分页显示。 6. 实现分页逻辑,可以通过设置每页显示的资源数量和当前页码来控制展示的数据范围。 通过以上步骤,就可以在WPF中实现分页显示CSND下载资源。用户可以点击按钮加载资源,然后每次翻页显示不同的资源信息,提供了更好的用户体验。同时,可以根据需要添加其他功能,比如搜索、筛选等,增加界面的交互性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值