我正在使用 Lightswitch 编写 Silverlight 应用程序。我想打印某些屏幕上显示的数据。
我找到了这个在 Silverlight/Lightswitch 中打印的教程。它描述了如何使用可以打印的 XAML 创建自定义控件。控件如下所示:
在后台,您可以看到控件在 Silverlight 应用程序中的外观。该控件同时包含一个按钮和一个网格:
<StackPanel>
<Button Content="Print" Name="btnPrint" Click="btnPrint_Click" />
<Grid x:Name="LayoutRoot">
<!-- grid code goes here -->
<!-- some more code an closing tags -->
使用 Silverlight 的打印 API,在自定义控件中打印是这样完成的:
PrintDocument printInvoice = new PrintDocument();
private void btnPrint_Click(object sender, System.Windows.RoutedEventArgs e){
printInvoice.PrintPage +=
new EventHandler<PrintPageEventArgs>(printInvoice_PrintPage);
}
void printInvoice_PrintPage(object sender, PrintPageEventArgs e){
e.PageVisual = LayoutRoot;
}
由于e.PageVisual = LayoutRoot
使用了,我们只看到打印输出中的表格,而不是按钮。没关系,但我想为打印布局使用单独的 XAML。我的目标是仅Print
在 Silverlight 应用程序上显示一个按钮,并在单独的 XAML 中定义打印布局。
因此,我刚刚开始创建第二个 XAML 作为 SilverlightControl 并尝试使用它:
MyPrintLayout mpl = new MyPrintLayout();
void printArtikels_PrintPage(object sender, PrintPageEventArgs e){
e.PageVisual = mpl.LayoutRoot;
}
但我收到错误“Das Element ist bereits das untergeordnete Element eines anderen Elements”(英文:“该元素已经是另一个元素的子元素”)。这个问题也在这个问题中讨论过,但它并没有解决我的问题。
当我包含MyPrintLayout
在 silverlight 应用程序中时,它显示没有问题(其中只有一些文本来测试功能)。
好像我这样做完全错误。我怎样才能实现我的目标?