我感兴趣的是以只激活一个属性的方式更改可观察集合的最有效方法。比方说,我想用3个项目填充列表,没有addCollection方法或类似的东西,所以我必须做清+ 3次添加。我是否需要创建不同的可观察集合并分配?或其他人使用什么技术?在可观察集合中的事务支持
3
A
回答
2
NET Framework的ObservableCollection
类将作为每个项目添加到集合个人的通知,并且不提供机制的AddRange类型的功能。但是,您可以非常轻松地创建自己的集合,实现INotifyCollectionChanged
并发送您喜欢的任何通知。
可能会遇到的问题是INotifyCollectionChanged
接口包含指定在单个消息中将多个项目添加到集合中的功能,但没有标准的.NET Framework类实际创建这些通知。因此,一些第三方和开放源代码控件在接收到添加通知时已经添加了一个项目。即使内置的.NET Framework类也可能有与此相关的未发现的错误。
由于这些原因,我建议您的自定义集合有一种模式,可以将其设置为始终在AddRange
的末尾发送重置通知,而不是单个多项目添加通知。您可以通过发送多个单项添加通知或重置通知来进一步优化,具体取决于实际添加的项目数量。
当然,在某些情况下,使用新的ObservableCollection
更容易。有时这会比循环Add()更有效,因为事件处理程序和CollectionViews被重建。其他时候,如果集合很大,并且循环每次只添加一些项目,则效率会更高。 有时它根本不起作用。
相关问题
- 1. 透视可观察集合
- 2. 只读可观察集合
- 3. 观察集合
- 4. 在可观察集合上取消收集已更改事件
- 5. 可观察的支持无功拉力
- 6. 当前项目的可观察集合?
- 7. 实现可观察集合的问题
- 8. 用linq排序可观察的集合
- 9. Datagrid可观察集合的多视图
- 10. 的Javascript观察集合数
- 11. 如何在Silverlight中将两个可观察的集合合并到集合中
- 12. 创建可观察列表/集合
- 13. Silverlight DataGrid刷新可观察集合
- 14. Silverlight 3 - 过滤可观察集合
- 15. 从可观察集合创建XML树
- 16. 将可观察集合绑定到GridView
- 17. 可观察集合深拷贝
- 18. 如何更新可观察集合组
- 19. XAML绑定可观察集合到DataGrid
- 20. 绑定两个可观察集合
- 21. 可观察集合与可枚举集合有什么区别?
- 22. 平映射在观察集合观察到的性质RxSwift
- 23. 观察PropertyChanged集合中的项目
- 24. 如何观察Ruby中的(mongo)集合?
- 25. 在MVVM光源中获取已排序的可观察集合
- 26. 在C#中过滤可观察的集合WPF
- 27. 在可观察的集合中维护60个元素
- 28. 在windows phone 7应用程序中更新可观察集合
- 29. 实施IsDirty在WPF MVVM观察集合
- 30. 组合可观察对象
可观察的集合实现ICollectionChanged,但我确定这是你的意思 – 2010-02-13 09:17:29
谢谢雷,你的回答很微妙++ :) – 2010-02-13 12:05:12
@Aran:感谢您的更正。我错了。顺便说一句,它实际上是INotifyCollectionChanged不ICollectionChanged(!而不是我或者已经) – 2010-02-15 18:45:42