2017-03-01 2 views
0

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 ...

Antwort

0

Ein Aufruf ScrollViewerVertical.UpdateLayout() das Problem gelöst

Verwandte Themen