打印功能
- PrintDocument对象
- 调用PrintDocument.Print()方法
xaml:
<UserControl x:Class="PrintDemo.MainPage"
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"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="400">
<Grid x:Name="LayoutRoot" Background="White">
<Canvas x:Name="cnvContainer">
<Border Height="120" Width="380" HorizontalAlignment="Left" Name="border1" VerticalAlignment="Top"
Background="AliceBlue"/>
<TextBlock Text="Silverlight打印Demo"
FontWeight="Bold" FontSize="20"/>
<ProgressBar Height="18" HorizontalAlignment="Right" Margin="0,50" x:Name="progressBar1"
Value="75" VerticalAlignment="Top" Width="350"/>
</Canvas>
<Button Content="Print" Height="23"
HorizontalAlignment="Left" Margin="200"
x:Name="btnPrint" VerticalAlignment="Top"
Width="75" Click="btnPrint_Click"/>
</Grid>
</UserControl>
xaml.cs:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Windows.Printing;
namespace PrintDemo
{
public partial class MainPage : UserControl
{
public MainPage()
{
InitializeComponent();
}
private void btnPrint_Click(object sender, RoutedEventArgs e)
{
PrintDocument document = new PrintDocument();
document.PrintPage += new EventHandler<PrintPageEventArgs>(document_PrintPage);
//上面那行代码及事件触发方法可以写成,这事一个匿名函数的写法
//document.PrintPage += (s, args) => { args.PageVisual = this.cnvContainer; };
//开始打印,并且显示打印机状态挂起打印时候显示的字符串
document.Print("开始打印。。。");
}
void document_PrintPage(object sender, PrintPageEventArgs e)
{
e.PageVisual = this.cnvContainer;
}
}
}