我在我的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. analogRead需要太多时间
- 2. 为什么我的图片需要加载太多时间?
- 3. Glide Imgae加载需要花费太多时间在recyclerview android
- 4. 页面索引需要太多时间来加载
- 5. 硒需要太多的时间加载一个页面
- 6. Parallel.ForEach在合并数据表时需要太多时间c#
- 7. 将文本文件中的数据导入到SQlite Administrator需要太多时间
- 8. 从服务器提取数据需要太多时间 - android
- 9. 如果数据低于设定限制,需要太多时间
- 10. 小小的mysql_queries需要太多时间
- 11. maven build需要太多时间
- 12. StanfordNLP CRFClassifier需要太多时间
- 13. CRC计算需要太多时间
- 14. WPF tabswitch /渲染需要太多时间
- 15. WCF启动需要太多时间
- 16. React-native run-android需要太多时间
- 17. 呼叫连接需要太多时间
- 18. 在手机间隙html页面需要太多时间来加载
- 19. Swf需要花费太多时间来加载,我该如何加快速度?
- 20. 解析CSV数据到Activerecord(MySQL)太慢,需要时间
- 21. 需要多少时间将大量数据插入到CoreData中
- 22. 将数据安装并导入到CiviCRM需要多长时间?
- 23. 当响应太快,需要更新的数据太多时
- 24. Heroku应用程序需要太长的时间才能加载
- 25. RSS需要太长时间才能在android中加载
- 26. 在symfony3中加载私人图像需要太长的时间
- 27. 加载位图需要的时间太长
- 28. ASP.NET MVC脚本包需要太长时间才能加载
- 29. Openpyxl加载现有的Excel需要太长时间
- 30. Flex:时间HTTPService需要多长时间才能加载?
你可以尝试创建一个ObervableCollection并在构造函数中传入模型。然后将此新的ObervableCollection设置为DataGrid的ItemsSource – Domysee
DataGrid速度很慢。你可以使用ListView/GridView? – Paparazzi
@Frisbee,看起来,你是对的。在向ObservableCollection(AddRange())添加新方法后,我stiil花费了太多时间来加载Data,但是在将我的集合绑定到listview之后,问题就解决了。你能解释一下,为什么datagrid需要花这么多时间来加载数据? – klutch1991