我正在研究为什么在使用 IList 的参数调用 CollectionChanged 时ObservableCollection/ListCollectionView/CollectionView
引发NotSuportedException的主题。
//Throws an exception
private void collectionChanged_Removed(IList items)
{
if (CollectionChanged != null)
CollectionChanged(this, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Remove, items));
}
我找到了几个网页,谈论这个话题,他们建议使用Reset
强制重新绘制 UI 的能力,或者只是简单地调用每个项目CollectionChanged
或更创造性的方式: http: //geekswithblogs.net/NewThingsILearned/存档/2008/01/16/listcollectionviewcollectionview-doesnt-support-notifycollectionchanged-with-multiple-items.aspx
我只是找不到为什么?对我来说,为什么会这样是没有意义的。
我们在开发周期中的某个时刻都面临着这个缺少的功能,因为当您想快速添加多个项目时,Add 方法需要很大的开销,是否有可能随时实现(.Net 5 , C# 6...)。
编辑:
在我的具体情况下,我编写了自己的课程:
public class ObservableList<T> : IList<T>, IList, IEnumerable<T>,
INotifyCollectionChanged
{
public event NotifyCollectionChangedEventHandler CollectionChanged;
//other stuff...
}
并且仍然抛出上述NotSupportedException。