我在我的WPF應用程序中有一個DataGrid控件。它綁定到Model對象的ObservableCollection。每個Model對象都有一個構造函數,該構造函數將EF-Model對象用作參數。應用程序用戶輸入正確的憑證後,應該執行一個方法。該方法從DB異步加載數據(大約1000個EF-Model對象)。加載後,我將每個對象傳遞給Model構造函數(像MyEFModelObjectsCollection.ForEach(o => MyObservableCollection.Add(new Model(o)))
一樣)。但將這一千個對象加載到我的DataGrid中需要很長時間。我應該如何處理它?將數據加載到datagrid需要太多時間
回答
使用的ListView/GridView的,除非你需要編輯
如果你只需要基本的編輯(文本框)仍然使用的ListView
DataGrid中做了很多,但它與開銷
的數據模型的很多單是方式複雜
可能的原因是ObservableCollection.Add()方法每次都會生成事件CollectionChanged。所以它影響你的應用程序的性能。此外ObserverCollection不包含方法AddRange()。但是你可以添加自己的ObservableCollectionEx:ObservableCollection並實現AddRange(IEnumerable collection)方法。你可以找到很多例子來說明如何去做。
我已經實現了AddRange(),但它沒有幫助。我也刪除了異步執行,但它仍然不起作用。由於我已經全部改變了,我可以看到引發的ContextDeadlock異常。我真的很害怕。 – klutch1991
在這種情況下實現更好的用戶體驗的一個好方法是爲每一行都包裝一個ViewModel。創建1000個包裝並將您的網格綁定到這些新ViewModel的集合。在您的DataGrid列XAML中使用綁定中的FallBack值來顯示一個臨時值。然後當你的異步數據服務返回你的模型對象時,將每一個傳遞給一個包裝器ViewModel並用新值更新ViewModel的屬性,這樣網格就可以全面響應,並逐漸顯示正確的數據。
這很有趣。你能提供一個小例子或鏈接嗎? – klutch1991
- 1. Neo4J - 加載到圖表需要太多時間
- 2. Informatica - 加載到目標需要太多時間
- 3. analogRead需要太多時間
- 4. magento圖像加載需要太多時間
- 5. 爲什麼我的圖片需要加載太多時間?
- 6. JQuery代碼需要花費太多時間加載
- 7. Glide Imgae加載需要花費太多時間在recyclerview android
- 8. 頁面索引需要太多時間來加載
- 9. 加載.php文件需要太多時間?
- 10. 硒需要太多的時間加載一個頁面
- 11. Parallel.ForEach在合併數據表時需要太多時間c#
- 12. 將文本文件中的數據導入到SQlite Administrator需要太多時間
- 13. 加入到1行表需要太多時間
- 14. 下載需要的時間太長
- 15. 將數據加載到bigquery時發生太多錯誤[無效]
- 16. 如果數據低於設定限制,需要太多時間
- 17. 從服務器提取數據需要太多時間 - android
- 18. Gulp lint需要太多時間
- 19. 需要太多時間的Mysql查詢
- 20. Rails - groupdate寶石需要太多時間
- 21. maven build需要太多時間
- 22. WPF tabswitch /渲染需要太多時間
- 23. 小小的mysql_queries需要太多時間
- 24. sbt - 構建Spark需要太多時間
- 25. sqlite cursor.close需要太多時間
- 26. CRC計算需要太多時間
- 27. WCF啓動需要太多時間
- 28. StanfordNLP CRFClassifier需要太多時間
- 29. 呼叫連接需要太多時間
- 30. UIWebView需要時間加載
你可以嘗試創建一個ObervableCollection並在構造函數中傳入模型。然後將此新的ObervableCollection設置爲DataGrid的ItemsSource – Domysee
DataGrid速度很慢。你可以使用ListView/GridView? – Paparazzi
@Frisbee,看起來,你是對的。在向ObservableCollection(AddRange())添加新方法後,我stiil花費了太多時間來加載Data,但是在將我的集合綁定到listview之後,問題就解決了。你能解釋一下,爲什麼datagrid需要花這麼多時間來加載數據? – klutch1991