Silverlight 4:打印功能






4.82/5 (8投票s)
Silverlight 4 现在支持使用打印 API 的打印功能。使用这些 API,您现在可以打印整个应用程序屏幕或应用程序的一部分。此外,您还可以在打印部分/完整应用程序时自定义外观。在本文中,我将带您深入了解。
引言
Silverlight 4 现在支持使用打印 API 的打印功能。使用这些 API,您现在可以打印整个应用程序屏幕或应用程序的一部分。此外,您还可以在打印部分/完整应用程序时自定义外观。在本文中,我将带您深入了解打印 API。
从 XAML 设计开始
让我们从一个新的空白 Silverlight 应用程序项目开始。打开 Visual Studio 2010,单击“文件”–>“新建”–>“项目”,或者只需按 CTRL + SHIFT + N 即可打开新建项目对话框。现在展开“Visual C#”部分并选择“Silverlight”。从右侧窗格中,选择“Silverlight 应用程序”,选择创建项目的位置并提供一个合适的名称(这里我使用“Silverlight4.PrintingAPI.Demo
”作为项目名称)。单击“确定”,这将弹出另一个对话框。选择“Silverlight 4”并点击“确定”以创建空白的 Silverlight 应用程序。
Visual Studio 将自动为您创建一个“MainPage.xaml”,并在您的 Visual Studio IDE 中显示。您现在可以根据您的需要设计您的应用程序。让我们在页面中添加一些内容
<Canvas x:Name="cnvContainer">
<Border BorderBrush="#FFC7851A" BorderThickness="1" Height="118"
HorizontalAlignment="Left" Margin="12,26,0,0" Name="border1"
VerticalAlignment="Top" Width="376" Background="#42F5E0A7" />
<TextBlock Text="Silverlight 4 Printing API Demo" FontWeight="Bold"
HorizontalAlignment="Left" FontSize="20" Margin="26,41,0,225" Width="353" />
<ProgressBar Height="18" HorizontalAlignment="Left" Margin="26,108,0,0"
Name="progressBar1" Value="75" VerticalAlignment="Top" Width="353" />
</Canvas>
<Button Content="Print" Height="23" HorizontalAlignment="Left" Margin="166,244,0,0"
Name="btnPrint" VerticalAlignment="Top" Width="75" Click="btnPrint_Click" />
在这里,我在“MainPage.xaml”中的主 Grid 面板“LayoutRoot
”中添加一个“Border
”、“TextBlock
”、“ProgressBar
”和一个“Button
”。一旦我们单击按钮,我们将开始打印工作。因此,为按钮添加了 Click 事件。
这是 UserControl
/Page
中的完整 XAML
<Grid x:Name="LayoutRoot" Background="White" HorizontalAlignment="Center"
VerticalAlignment="Top">
<Canvas x:Name="cnvContainer">
<Border BorderBrush="#FFC7851A" BorderThickness="1" Height="118"
HorizontalAlignment="Left" Margin="12,26,0,0" Name="border1"
VerticalAlignment="Top" Width="376" Background="#42F5E0A7" />
<TextBlock Text="Silverlight 4 Printing API Demo" FontWeight="Bold"
HorizontalAlignment="Left" FontSize="20" Margin="26,41,0,225" Width="353" />
<ProgressBar Height="18" HorizontalAlignment="Left" Margin="26,108,0,0"
Name="progressBar1" Value="75" VerticalAlignment="Top" Width="353" />
</Canvas>
<Button Content="Print" Height="23" HorizontalAlignment="Left" Margin="166,244,0,0"
Name="btnPrint" VerticalAlignment="Top" Width="75" Click="btnPrint_Click" />
</Grid>
如果现在运行您的应用程序,它将类似于这样
从代码开始
这都是关于我们示例应用程序的设计部分。如果您现在运行您的应用程序并单击按钮,它将不会为您做任何事情。您可能会问“为什么?”,答案是我们没有编写任何用于打印的代码。所以,让我们跳到那个部分。当按下按钮时,让我们编写代码以从 Silverlight 应用程序中打印此页面。由于我们已经将 Click_Event
注册到按钮,您将在代码隐藏文件“MainPage.xaml.cs”中找到事件实现。在其中编写以下代码以创建 PrintDocument
并要求浏览器打印您的应用程序
PrintDocument document = new PrintDocument();
document.PrintPage += (s, args) =>
{
args.PageVisual = this.LayoutRoot;
};
document.Print("Silverlight Print Application Demo");
现在,运行您的应用程序,一旦它在浏览器中打开,单击“打印”按钮。如果您已经在您的 PC 上安装了打印机,您将注意到打印机选项页面在您的桌面上打开。选择您选择的打印机,然后单击“打印”。这将打印您的整个应用程序。
What Next?
那么接下来呢?我们可以打印应用程序的一小部分吗?答案是“是的,为什么不呢?”让我们做一个小技巧来打印一小部分。准备好了吗?嗯…打开您的 XAML 文件“MainPage.xaml”。您将看到 Grid
中有一个 Canvas
,其中包含 border
、textblock
和 progressbar
。该 button
设置在名为“cnvContainer
”的 Canvas
之外。让我们只打印应用程序的 canvas 部分。转到您的“MainPage.xaml.cs”文件并修改 click 事件实现。最新的代码将如下所示
PrintDocument document = new PrintDocument();
document.PrintPage += (s, args) =>
{
args.PageVisual = this.cnvContainer;
};
document.Print("Silverlight Print Application Demo");
如果您查看实现,您将看到我只修改了 PrintPage
实现。之前 PageVisual
设置为 grid“LayoutRoot
”,现在已更改为 canvas“cnvContainer
”。运行您的应用程序并单击打印按钮。将弹出相同的打印选项。选择您的打印机,然后再次单击打印。这将仅打印我们在 PageVisual
中选择的部分。如果您回忆之前的打印页面,页面内有一个按钮,但现在它不在那里。为什么?因为我们为打印选择的 cnvContainer
不包含“Print”按钮。

结束语
我想,这将让您了解 Silverlight 4 的打印功能,现在您可以继续在您的应用程序中包含它。您可以根据您的需要自定义打印视图。这将有利于从您的 Silverlight 应用程序中打印“录取通知卡”、“用户输入的文本”等。
历史
- 2010 年 4 月 24 日:初始帖子