So drucken Sie mehrere WPF-Seiten in einem Dokument

Ich möchte ein Dokument mit mehreren Seiten und einem auf jeder Seite abgebildeten WPF-Fenster erstellen.

Ich habe es geschafft, ein Fenster mit PrintDialog und PrintVisual zu drucken. Dies scheint jedoch nur mit einer einzigen Seite zu funktionieren? Irgendwelche Ideen, wie ich ein Dokument mit mehreren Seiten erstellen und den kompletten Satz ausdrucken kann.

Kann ich dieses Bild einfügen (im Code angegeben) und es als Seite in ein Dokument einfügen und anschließend ausdrucken?

Ist der Ansatz wirklich schlecht? Gibt es eine andere Möglichkeit, dieses Problem zu lösen?

<code>      Sub Print (Dim ele As FrameWorkElement)
            Dim margin As Double = 30
            Dim titlePadding As Double = 10

            Dim printDlg As PrintDialog = New PrintDialog()
            printDlg.PrintTicket.PageOrientation = PageOrientation.Landscape
            If (printDlg.ShowDialog() <> True) Then Return

            Dim formattedText As FormattedText = New FormattedText(Name, CultureInfo.GetCultureInfo("en-us"),
                                                            FlowDirection.LeftToRight, New Typeface("Verdana"), 25, Brushes.Black)

            formattedText.MaxTextWidth = printDlg.PrintableAreaWidth

            Dim scale As Double = Math.Min(printDlg.PrintableAreaWidth / (ele.ActualWidth + (Margin * 2)),
                                    (printDlg.PrintableAreaHeight - (formattedText.Height + titlePadding)) / (ele.ActualHeight + (Margin * 2)))

            Dim visual As DrawingVisual = New DrawingVisual()
            Using context As DrawingContext = visual.RenderOpen()

                Dim brush As VisualBrush = New VisualBrush(ele)
                context.DrawRectangle(brush, Nothing, New Rect(New Point(margin, margin + formattedText.Height + titlePadding),
                                                            New Size(ele.ActualWidth, ele.ActualHeight)))

                context.DrawText(formattedText, New Point(margin, margin))
            End Using
            visual.Transform = New ScaleTransform(scale, scale)
            printDlg.PrintVisual(visual, "")
     End Sub
</code>

Antworten auf die Frage(1)

Ihre Antwort auf die Frage