0

Lightswitch を使用して Silverlight アプリケーションをプログラミングしています。一部の画面に表示されているデータを印刷したい。

Silverlight/Lightswitch で印刷するためのこのチュートリアルを見つけました。印刷可能な XAML を使用してカスタム コントロールを作成する方法について説明します。コントロールは次のようになります。

Lightswitch での印刷

バックグラウンドで、コントロールが 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と、問題なく表示されます (機能をテストするためのテキストのみが含まれています)。

私はこれを完全に間違っているようです。どうすれば目標を達成できますか?

4

1 に答える 1

3

mpl.LayoutRoot は既に mpl のサブ要素です。これを試して:

void printArtikels_PrintPage(object sender, PrintPageEventArgs e){
    MyPrintLayout mpl = new MyPrintLayout();
    e.PageVisual = mpl;
}
于 2013-01-29T13:05:39.683 に答える