Sha*_*ngh 11 .net wpf observablecollection
为什么ObservableCollection没有这样的RemoveAll方法List?
我已经实现了一个扩展方法来提供此功能ObservableCollection,但我想了解是否有特定原因不提供此功能.
由于Collection更改,它是否可能以某种方式影响数据绑定?这篇文章确实指出了一些在使用时可能出错的事情,但没有解决这个问题.ObservableCollections
Rac*_*hel 22
它确实有一个Clear()删除所有可以使用的项目的方法.
如果我不得不冒险猜测他们为什么使用Clear而不是RemoveAll,我认为这是因为RemoveAll带有你从集合中删除物品的建议,同时Clear告诉你这些物品只是被清除了.
这CollectionChanged会对引发的通知类型产生影响.Clear()引发NotifyCollectionChangedAction.Reset事件并且不包括事件中已删除的项目,同时Remove引发NotifyCollectionChangedAction.Removed事件,并将删除的项目传递给事件.
您不能CollectionChanged使用多个项目引发事件,因此NotifyCollectionChangedAction.Removed在删除所有项目的情况下引发事件会引发异常.另一种方法是CollectionChanged为每个被移除的项目引发一个事件,这对性能来说可能非常糟糕.NotifyCollectionChangedAction.Reset当用户期望Removed在删除项目时发生事件时,简单地引发事件会引起一些混乱.
所以我猜他们决定简单地使用.Clear()而不是.RemoveAll()因为这个名字更好地描述了幕后实际发生的事情.
| 归档时间: |
|
| 查看次数: |
8876 次 |
| 最近记录: |