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 を使用したいと考えています。私の目標は、Silverlight アプリケーションにボタンPrint
を表示し、別の XAML で印刷レイアウトを定義することです。
そこで、SilverlightControl として 2 つ目の XAML を作成し、それを使用しようとしました。
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」というエラーが表示されます (英語: 「要素は既に別の要素のサブ要素です」)。このエラーはこの質問でも議論されましたが、私の問題は解決しません。
Silverlight アプリケーションに含めるMyPrintLayout
と、問題なく表示されます (機能をテストするためのテキストのみが含まれています)。
私はこれを完全に間違っているようです。どうすれば目標を達成できますか?