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?
Antwort
Clean shutdown in Silverlight and WPF applications
prüfen, wie der Autor dieser Anwendung hat es über den Code vielleicht kann es Ihnen helfen, wenn es anderes Szenario ist.
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.
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
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
Es ist mit WPF getaggt. – GraemeF
Wie viele Gegenstände hast du in der Liste? –