Ich habe eine WPF-Anwendung mit PRISM. Ich habe einen Login-Bildschirm und bei erfolgreicher Anmeldung wird eine neue Ansicht mit einer TileListView mit vielen Elementen angezeigt. Das Rendern dauert über 10 Sekunden, da die Steuerung viel berechnen muss usw. All dies verwendet den UI-Thread nach Standardverhalten, da das Rendern in WPF im UI-Thread erfolgt. Ist es möglich, ein WaitControl wie ein Spinner oder nur eine einfache Animation in einem separaten Fenster oder so anzuzeigen? Wenn die Animation zu diesem Zeitpunkt angehalten wird, wird das Steuerelement im UI-Thread gerendert.Wartebildschirm beim Rendern UIElement in WPF
Antwort
Sie könnten ein neues Fenster erstellen, das in einem separaten Thread startet. In dem folgenden Blogpost finden Sie ein Beispiel wie das getan wird.
ein WPF-Fenster in einem separaten Thread starten:http://reedcopsey.com/2011/11/28/launching-a-wpf-window-in-a-separate-thread-part-1/
Dann einfach Sie diesen Thread starten, um das Fenster zeigt nur, nachdem Sie die Anmeldeinformationen überprüft haben und kurz vor Ihrem schweren Rendering können beginnen.
Dies ist wahrscheinlich das Beste, was Sie tun können, und es sollte auch eine ziemlich einfache Sache zu implementieren sein.
Genau das, was ich brauchte, vielen Dank. –
Sie können SplashScreen verwenden, bis der Hintergrundprozess abgeschlossen ist. Siehe hierzu Splash Screen in WPF
Das löst mein Problem nicht, bitte lesen Sie meine Frage. –
- 1. WPF UIElement Aktualisierungsfehler?
- 2. WPF Style-Trigger-on Foreign UIElement
- 3. Ansicht auf einen Wartebildschirm umstellen
- 4. Finden Sie die Mitte eines Uielement in Wpf
- 5. Gibt es eine eindeutige Kennung für wpf UIElement?
- 6. Abrufen der oberen linken Koordinaten eines WPF UIElement
- 7. WPF: DataBinding eine PointCollection für ein benutzerdefiniertes UIElement
- 8. WPF - Feststellen, ob die Maus über einem UIElement
- 9. Wie Rendern Bitmap in Canvas in WPF?
- 10. wpf Übersetzungspunkt relativ zum Fenster führt zu einem Versatz beim Verschieben des UIElement
- 11. Von GDI zu WPF: Rendern
- 12. WPF ListView nicht rendern Vorlagen
- 13. C# Lösche UIElement, wenn ein anderes UIElement ihn passiert
- 14. Probleme beim Rendern Beim Rendern ist eine Ausnahme aufgetreten: com.android.ide.common.rendering.api.LayoutlibCallback
- 15. Probleme beim Rendern beim Rendern: com/android/util/PropertiesMap
- 16. C# UIElement LostTouchCapture OnLostTouchCapture
- 17. Erzeuge BitmapSource von UIElement
- 18. Ausnahme beim Rendern: action_bar
- 19. Markup.IStyle.Connector.Connect Fehler beim Binden in WPF
- 20. Python BadYieldError beim Rendern Future
- 21. FB.XFBML.parse() schlägt beim Rendern fehl
- 22. Absolute Koordinaten von UIElement in WinRT
- 23. Mein eigenes UIElement-Steuerelement in XAML hinzufügen
- 24. Bindung an UIElement in Code-Behind Absturz
- 25. Fehler beim Rendern der Vorlage
- 26. Leere Google Map beim Rendern
- 27. möchte ein UIElement Größe erhalten
- 28. Wiederverwenden von Texturen in WebGL beim Rendern
- 29. Flucht doppelte Anführungszeichen beim Rendern in Jinja2
- 30. Eine Datei beim Rendern in JavaScript verkleinern
Wäre es möglich, einen Refactoring durchzuführen, sodass UI-Objekte an DependencyProperties gebunden sind, die zugewiesen werden, nachdem Berechnungen in Hintergrundthreads ausgeführt wurden? Scheint so, als könnte es ein Problem sein, dass so viel auf dem UI-Thread passiert. –
Die Steuerung ist von Telerik, also konnte ich nicht ändern:/ –
Ich sehe. Ein Spinner im selben Fenster würde definitiv nicht funktionieren - seine Spinanimation würde auf dem gleichen festgefahrenen UI-Thread stattfinden, also würde es sich nicht gut drehen. Aber vielleicht könnte Ihre Idee, ein anderes Fenster oder etwas zu überlagern, funktionieren. Sie müssen nur wissen, wann das Steuerelement geladen wurde. Können Sie etwas mehr erklären, was die Steuerung berechnet? Das könnte uns helfen, eine andere Lösung zu finden –