Silverlight中打印文件

1:先把页面DataGrid上的数据导入到一个另外一个空DataGrid中:

                for (int i = 0; i < StatisticsDetail.Columns.Count; i++)
                {
                    DataGridTextColumn tmpColumn = new DataGridTextColumn();
                    DataGridTextColumn column = (DataGridTextColumn)StatisticsDetail.Columns[i];
                    tmpColumn.Header = column.Header.ToString();
                    System.Windows.Data.Binding bind;
                    if (column.Binding != null)
                    {
                        bind = new System.Windows.Data.Binding();
                        bind.Path = column.Binding.Path;
                        bind.Converter = column.Binding.Converter;
                    }
                    else
                        bind = new System.Windows.Data.Binding();

                    tmpColumn.Binding = bind;
                    grid.Columns.Add(tmpColumn);
                }
                grid.ItemsSource = StatisticsDetail.ItemsSource;

                //开始打印
                Print(grid, documentName);

2:在采用Silverlight中的Print方法打印

private static void Print(UIElement source, string documentName)
        {
            var doc = new PrintDocument();

            var offsetY = 0d;
            var totalHeight = 0d;
            var canvas = new Canvas();
            canvas.Children.Add(source);
            try
            {
                doc.PrintPage += (s, e) =>
                {
                    e.PageVisual = canvas;
                    canvas.Margin = new Thickness(50);
                    if (totalHeight == 0)
                    {
                        totalHeight = source.DesiredSize.Height;
                    }

                    Canvas.SetTop(source, -offsetY);

                    offsetY += e.PrintableArea.Height;
                    //是否多页打印
                    e.HasMorePages = offsetY <= totalHeight;
                };

                doc.Print(documentName);
            }
            catch { }
        }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值