Я изучаю тему, почему ObservableCollection/ListCollectionView/CollectionView
вызывает NotSuportedException при вызове CollectionChanged с параметром IList.
//Throws an exception
private void collectionChanged_Removed(IList items)
{
if (CollectionChanged != null)
CollectionChanged(this, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Remove, items));
}
Я нашел несколько веб-страниц, рассказывая об этой теме, и они предлагают либо использовать способ Reset
для принудительной полной перерисовки пользовательского интерфейса, либо просто вызвать для каждого элемента CollectionChanged
или несколько более творческий способ: http://geekswithblogs.net/NewThingsILearned/archive/2008/01/16/listcollectionviewcollectionview-doesnt-support-notifycollectionchanged-with-multiple-items.aspx
Я просто не могу найти ПОЧЕМУ? Для меня нет никакого смысла, почему это будет так.
Есть ли вероятность, что эта недостающая функция, с которой мы все сталкиваемся в какой-то момент нашего цикла разработки, поскольку метод Add просто имеет большую часть накладных расходов, когда вы хотите быстро добавить несколько элементов, будет выполняться в любое время (.Net 5, С# 6...).
Edit:
В моем конкретном случае я написал свой собственный класс:
public class ObservableList<T> : IList<T>, IList, IEnumerable<T>,
INotifyCollectionChanged
{
public event NotifyCollectionChangedEventHandler CollectionChanged;
//other stuff...
}
И все равно выбрасывает указанное NotSupportedException.