我有ObservableCollection<T>集合,我想用新的元素集合替换所有元素,我可以这样做:
ObservableCollection<T>
collection.Clear();
要么:
collection.ClearItems();
(顺便说一句,这两种方法有什么区别?)
我也foreach可以collection.Add一一习惯,但这会触发多次
foreach
collection.Add
添加元素集合时相同。
编辑:
我在这里找到了一个不错的库:增强型ObservableCollection,具有延迟或禁用通知的功能,但它似乎不支持silverlight。
ColinE提供的所有信息都是正确的。我只想添加ObservableCollection用于此特定情况的子类。
ObservableCollection
public class SmartCollection<T> : ObservableCollection<T> { public SmartCollection() : base() { } public SmartCollection(IEnumerable<T> collection) : base(collection) { } public SmartCollection(List<T> list) : base(list) { } public void AddRange(IEnumerable<T> range) { foreach (var item in range) { Items.Add(item); } this.OnPropertyChanged(new PropertyChangedEventArgs("Count")); this.OnPropertyChanged(new PropertyChangedEventArgs("Item[]")); this.OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset)); } public void Reset(IEnumerable<T> range) { this.Items.Clear(); AddRange(range); } }