【原创】分享一种WPF列表数据的分页打印方案

2020-12-19 15:32

阅读:431

标签:分页   简单   har   mic   sum   无效   temp   count()   EDA   

核心想法:基于模板,数据与样式分离,不希望把数据和样式混在一起拼接。

 

模板,使用WPF的普通Page页即可,样式布局直接使用现有的。

数据,通过DataContext绑定到页面上。

 

原理很简单,下面贴一下代码或截图。

模板页(一个很普通的WPF页面):

技术图片

 

 

 简单写了一个打印类及相应方法。

    /// 
    /// 基于模板的打印
    /// 
    /// 模板页类型
    public class TemplatePrint
        where T : Page , new()
        
    {
        /// 
        /// 打印
        /// 
        /// 数据
        /// 分页时需要知道每页显示多少条记录
        /// 
        public string Print(PrintBaseData data, int pageSize = 20) where TItem : class
        {
            try
            {
                if (data == null || data.Items == null || data.Items.Count() == 0)
                {
                    return "无效数据";
                }
                if (pageSize 

  打印类是个泛型类,类型即是模板类型,这里打印类及方法的设计力求做到抽象通用。

  下面提供了打印方法需要的打印数据的基类。

/// 
    /// 打印数据
    /// 
    /// 列表项类型
    public class PrintBaseData where TItem : class
    {
        public string Title { get; set; }

        public IEnumerable Items { get; set; }
    }

  

下面是打印功能调用的代码。

var testData = new List();
            var aarea = new[] { "A", "B", "C", "D", "F" };
            for (int i = 0; i ()
            {
                Title = "",
                Items = testData
            };
            new TemplatePrint().Print(printData, 50);

  就是这样,代码很简单,思想也简单,使用也简单。

之前研究学习了DocumentPaginator,折腾了半天,用不好,放弃了。[裂开]

 

【原创】分享一种WPF列表数据的分页打印方案

标签:分页   简单   har   mic   sum   无效   temp   count()   EDA   

原文地址:https://www.cnblogs.com/luqingfei/p/14132590.html


评论


亲,登录后才可以留言!