微软于PDC2009上发布Silverlight 4 Beta版,微软在Silverlight 4版本中处理了约8000个的Silverlight终端用户的请求,加入了一系列另开发人员兴奋的新特性,最突出的主要体现在几个方面:
开发工具增强:Visual Studio 2010具有可视化的设计工具,创建项目时可以选择运行时版本是3.0还是4.0,BLEND4加入XAML和C#代码全方位智能感知功能、XAML的样式应用更为易用等。
兼容性增强:对Google的Chrome浏览器的支持。
运行速度提升:启动速度和渲染速度较前个版本提升约2倍左右。
DRM增强:支持PlayReady,可以对视频和音频的播放进行的保护,补充了对H.264的DRM保护。
对于一个Silverlight来说,需要打印的内容往往可能是整个网页的一部页,或是整个Silverlight应用程序的某个局部内容,如果仅仅使用JavaScript的网页打印的话,是无法满足Silverlight应用程序中打印的需求,不过这个问题终于在Silverlight 4.0中得到了比较完美的解决。Silverlight 4运行时中引入了System.Windows.Printing命名空间,这个命名空间中包含一个名为PrintDocument的类,它可以完成Silverlight应用程序中有“针对性”的打印任务。
下面我们用GRID制作一个简单的报表。
XAML:
1 <Grid x:Name="LayoutRoot" Background="White" >
2 <Grid.RowDeFinitions>
3 <RowDeFinition Height="*"/>
4 <RowDeFinition Height="40"/>
5 </Grid.RowDeFinitions>
6 <!--简单的报表-->
7 <Border BorderBrush="Black" BorderThickness="1">
8 <Grid x:Name="reportGrid" Grid.Row="0" ShowGridLines="True">
9 <Grid.Resources>
10 <Style targettype="TextBlock">
11 <Setter Property="VerticalAlignment" Value="Center"/>
12 <Setter Property="HorizontalAlignment" Value="Center"/>
13 </Style>
14 </Grid.Resources>
15 <Grid.RowDeFinitions>
16 <RowDeFinition Height="30"/>
17 <RowDeFinition Height="30"/>
18 <RowDeFinition Height="30"/>
19 <RowDeFinition Height="30"/>
20 <RowDeFinition Height="30"/>
21 </Grid.RowDeFinitions>
22 <Grid.ColumnDeFinitions>
23 <ColumnDeFinition Width="100"/>
24 <ColumnDeFinition Width="200"/>
25 <ColumnDeFinition Width="300"/>
26 </Grid.ColumnDeFinitions>
27 <TextBlock Text="产品编号" Grid.Row="0" Grid.Column="0"/>
28 <TextBlock Text="产品名称" Grid.Row="0" Grid.Column="1"/>
29 <TextBlock Text="产品大类" Grid.Row="0" Grid.Column="2"/>
30 <TextBlock Text="1" Grid.Row="1" Grid.Column="0"/>
31 <TextBlock Text="数码相机" Grid.Row="1" Grid.Column="1"/>
32 <TextBlock Text="相机" Grid.Row="1" Grid.Column="2"/>
33 <TextBlock Text="2" Grid.Row="2" Grid.Column="0"/>
34 <TextBlock Text="笔记本电脑" Grid.Row="2" Grid.Column="1"/>
35 <TextBlock Text="电脑" Grid.Row="2" Grid.Column="2"/>
36 </Grid>
37 </Border>
38 <!--打印按钮控件-->
39 <Button x:Name="btnPrint" Grid.Row="1" Click="btnPrint_Click"
40 Width="100" Height="25" Content="打印报表"/>
41 </Grid>
如图所示。
2 <Grid.RowDeFinitions>
3 <RowDeFinition Height="*"/>
4 <RowDeFinition Height="40"/>
5 </Grid.RowDeFinitions>
6 <!--简单的报表-->
7 <Border BorderBrush="Black" BorderThickness="1">
8 <Grid x:Name="reportGrid" Grid.Row="0" ShowGridLines="True">
9 <Grid.Resources>
10 <Style targettype="TextBlock">
11 <Setter Property="VerticalAlignment" Value="Center"/>
12 <Setter Property="HorizontalAlignment" Value="Center"/>
13 </Style>
14 </Grid.Resources>
15 <Grid.RowDeFinitions>
16 <RowDeFinition Height="30"/>
17 <RowDeFinition Height="30"/>
18 <RowDeFinition Height="30"/>
19 <RowDeFinition Height="30"/>
20 <RowDeFinition Height="30"/>
21 </Grid.RowDeFinitions>
22 <Grid.ColumnDeFinitions>
23 <ColumnDeFinition Width="100"/>
24 <ColumnDeFinition Width="200"/>
25 <ColumnDeFinition Width="300"/>
26 </Grid.ColumnDeFinitions>
27 <TextBlock Text="产品编号" Grid.Row="0" Grid.Column="0"/>
28 <TextBlock Text="产品名称" Grid.Row="0" Grid.Column="1"/>
29 <TextBlock Text="产品大类" Grid.Row="0" Grid.Column="2"/>
30 <TextBlock Text="1" Grid.Row="1" Grid.Column="0"/>
31 <TextBlock Text="数码相机" Grid.Row="1" Grid.Column="1"/>
32 <TextBlock Text="相机" Grid.Row="1" Grid.Column="2"/>
33 <TextBlock Text="2" Grid.Row="2" Grid.Column="0"/>
34 <TextBlock Text="笔记本电脑" Grid.Row="2" Grid.Column="1"/>
35 <TextBlock Text="电脑" Grid.Row="2" Grid.Column="2"/>
36 </Grid>
37 </Border>
38 <!--打印按钮控件-->
39 <Button x:Name="btnPrint" Grid.Row="1" Click="btnPrint_Click"
40 Width="100" Height="25" Content="打印报表"/>
41 </Grid>
如图所示。
C#:
1 public PrintSample()
2 {
3 InitializeComponent();
4 this.Loaded += new RoutedEventHandler(PrintSample_Loaded);
5 }
6
7 void PrintSample_Loaded(object sender,RoutedEventArgs e)
8 {
9 //创建打印文档对象
10 pd = new System.Windows.Printing.PrintDocument();
11 //创建打印事件,用于指定打印的文档对象作用的对象
12 pd.PrintPage += new EventHandler<System.Windows.Printing.PrintPageEventArgs>(pd_PrintPage);
13 }
14
15 void pd_PrintPage(object sender,System.Windows.Printing.PrintPageEventArgs e)
16 {
17 //指定打印文档对象的页面
18 e.PageVisual = reportGrid;
19 }
20 private System.Windows.Printing.PrintDocument pd;
21 private void btnPrint_Click(object sender,RoutedEventArgs e)
22 {
23 //定义打印的文档名称
24 pd.DocumentName = "产品报表";
25 //调用打印方法,开始打印
26 pd.Print();
27 }
2 {
3 InitializeComponent();
4 this.Loaded += new RoutedEventHandler(PrintSample_Loaded);
5 }
6
7 void PrintSample_Loaded(object sender,RoutedEventArgs e)
8 {
9 //创建打印文档对象
10 pd = new System.Windows.Printing.PrintDocument();
11 //创建打印事件,用于指定打印的文档对象作用的对象
12 pd.PrintPage += new EventHandler<System.Windows.Printing.PrintPageEventArgs>(pd_PrintPage);
13 }
14
15 void pd_PrintPage(object sender,System.Windows.Printing.PrintPageEventArgs e)
16 {
17 //指定打印文档对象的页面
18 e.PageVisual = reportGrid;
19 }
20 private System.Windows.Printing.PrintDocument pd;
21 private void btnPrint_Click(object sender,RoutedEventArgs e)
22 {
23 //定义打印的文档名称
24 pd.DocumentName = "产品报表";
25 //调用打印方法,开始打印
26 pd.Print();
27 }
运行结果如图所示。
使用后台代码来实现打印方法,主要依靠
System
.
Windows
.
Printing
.
PrintDocument这个类来完成,
PrintDocument具有PrintPage事件,你需要创建这个事件的事件处理方法,并在这个事件里指定打印文档的对象页面,在这里就是reportGrid的GRID控件,其中DocumentName是你要打印文档的名称,最终调用Print方法开始打印,并显示打印窗口,如果你没有安装打印机,系统会提示你先安装打印机,如图所示。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。