2009-11-25 4 views
7

Ich habe WPF ListBox, die eine Menge Daten zeigt. Ich brauche reibungsloses Scrollen, also habe ich ListBox.ScrollViewer.CanContentScroll auf False gesetzt, das die Virtualisierung deaktiviert. Jetzt, wenn ich die Registerkarte öffne, wo diese ListBox platziert ist, sehe ich nichts für ein paar Sekunden, weil ListBox Laden/Erstellen von Elementen/Rendering ist. Ich habe auch ein Steuerelement, das eine Animation zeigt, die anzeigt, dass die Anwendung ausgeführt wird und der Benutzer ein wenig warten sollte. Wie kann ich dieses Steuerelement anzeigen, während ListBox nicht verfügbar ist?Wie zeigt man Animationen, während die Steuerung rendert?

+0

vielleicht mehr Details wären hilfreich? Dinge wie ... welche Sprache und welchen Rahmen du arbeitest ... Leider werden Begriffe wie "ListBox" an vielen Orten verwendet. – Paul

+0

Es ist mit WPF getaggt. – GraemeF

+0

Wie viele Gegenstände hast du in der Liste? –

Antwort

2

Fügen Sie ein Raster an der Position Ihrer Listbox ein und platzieren Sie darin Ihre ListBox und Ihr Animationssteuerelement. Auf diese Weise sind sie am selben Ort platziert. Das Animationssteuerelement sollte oben in der Z-Reihenfolge sein und so angezeigt werden. Sobald die ListBox geladen wurde, würden Sie das Animations-Steuerelement ausblenden und stattdessen die ListBox anzeigen. Jedes Mal, wenn Sie eine weitere lange Operation ausführen müssen, setzen Sie das Animationssteuerelement wieder sichtbar.

+2

Wie kann festgestellt werden, dass die Listbox bereits gerendert wurde? Und das Rendering wird im selben Thread ausgeführt, der die Animation "animiert", so dass es keinen Effekt gibt. Oder ich habe nicht Recht? Ich benutze bereits diese Technik, aber wenn ich zeigen muss, dass ein langer Hintergrund (der in einem anderen Thread arbeitet) (non-gui) läuft. – levanovd