Ich drucke einen großen Bildschirm (groß) nach Stücken mit Hilfe einer ScrollViewer
.
Im PrintPage
Handler nach unten scrollen ich die ScrollViewer
und dann die PageVisual
-ScrollViewer
Instanz. Wenn der SV unten ist, setze ich die Eigenschaft HasMorePages
auf false.
Mein Problem ist, dass dies in Ordnung unter der Bedingung arbeiten, dass ich den Benutzer mit einer MessageBox zwischen den einzelnen Seiten aufgefordert, andernfalls wird der SV nicht außer am Ende des Druckvorgangs nicht bewegen.PrintDocument und Scrollviewer
Ich habe versucht, die Rolle auf dem UI-Thread zu tun, aber kein Glück:
void Print_PrintPage(object sender, PrintPageEventArgs e)
{
// DefPage contains properties of the printed page
DefPage defPage = _enumeratorPages.Current;
e.HasMorePages = _enumeratorPages.MoveNext();
ScrollViewerVertical.Dispatcher.BeginInvoke(delegate {
ScrollViewerVertical.ScrollToVerticalOffset(defPage.OffsetY);
});
e.PageVisual = ScrollViewerVertical;
}
Und wenn ich ManualResetEvent
mit WaitOne
verwende für den UI-Thread zu warten, um die Schriftrolle, einfrieren meines Browser zu aktualisieren ...