2016-09-01 5 views
1

Ich entwickle gerade eine UWP App und benutze die Windows.Graphics.Printing.PrintManager Klasse, um das Vorschaufenster anzuzeigen. Ich habe einige Kontrollen, die das Ergebnis beeinflussen, und ich rufe printDocument.InvalidatePreview() auf, um die Vorschau zu aktualisieren, wenn Benutzer sie ändert. Es funktioniert gut, bis der Benutzer die Größe des Fensters ändert. Danach wird die Vorschau nach dem Aufruf von printDocument.InvalidatePreview() nicht aktualisiert.UWP Druckvorschau wird nicht aktualisiert, nachdem Fenstergröße geändert wurde

Es ist absolut unklar, was passiert in InvalidatePreview, weil die Dokumentation sehr schlecht ist und es keinen Quellcode gibt.

Kennt jemand eine Lösung oder einen Workaround dafür?

Antwort

0

Ich habe eine sehr einfache Demo geschrieben, um zu versuchen, Ihr Problem zu reproduzieren, aber ich kann nicht reproduzieren. Ich rufe die printDoc.InvalidatePreview(), nachdem der Benutzer die Option Druckvorschau ändern Code, wie

if (optionId == "PageContent") 
    { 
     await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal,() => 
     { 
      printDoc.InvalidatePreview(); 
     }); 
    } 

folgt Und es funktionierte gut, es funktionierte auch nach der Größe verändert App-Fenster. Es scheint, die InvaliddatePreview() wird PrintDocument.GetPreviewPage Ereignis zurückrufen, wenn Sie es abonniert haben und die Druckvorschau wird aktualisiert. Ich habe die demo auf github hochgeladen, die Sie zum Testen herunterladen und mit Ihrem Projekt vergleichen können, um Unterschiede zu finden. Wenn dies nicht durch Vergleichen von Unterschieden gelöst werden kann, können Sie versuchen, Ihr Problem auf dieser Demo zu reproduzieren und uns helfen, es erneut zu lösen.

Weitere details bitte referenz: https://msdn.microsoft.com/en-us/windows/uwp/devices-sensors/print-from-your-app. Und das offizielle Beispiel: https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/Printing

+0

Vielen Dank für die Aufmerksamkeit auf mein Problem. Ihr Code funktioniert und es hat mir geholfen, das Problem besser zu verstehen. Die Paginierung nimmt viel Zeit mit meinen Daten (ich habe mehr als 10 Seiten) und das bricht die Druckvorschau in meinem Fall. Sie können das Problem in Ihrer App reproduzieren, wenn Sie "System.Threading.Tasks.Task.Delay (1000) .Wait();' zu der 'PrintDic_Paginate' Methode hinzufügen. –

+0

Ich habe festgestellt, dass ich Ihr Problem reproduzieren kann. 'Größe des Fensters ändern' bedeutet, dass die Größe des Druckfensters geändert wird, richtig? Ändern Sie die Größe der Druckoberfläche, um dieses Problem zu beheben. Ich werde es mit meinem Team kommunizieren. –

+0

Ja, richtig. Ändern Sie die Größe des Druck-UI-Fensters, um das Problem zu beheben. –

Verwandte Themen