Я изучаю тему, почему 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, C# 6...).
Изменить:
В моем конкретном случае я написал свой собственный класс:
public class ObservableList<T> : IList<T>, IList, IEnumerable<T>,
INotifyCollectionChanged
{
public event NotifyCollectionChangedEventHandler CollectionChanged;
//other stuff...
}
И по-прежнему выдает упомянутое NotSupportedException.
NotifyCollectionChangedEventArgs
, где списокOldItems
илиNewItems
содержит несколько элементов. - person nmclean   schedule 07.02.2014ObservableList
со встроеннымObservableCollection
в своем ответе, поэтому я убрал эту часть. Можете ли вы включить воспроизводимый сценарий, демонстрирующий точную проблему? - person drankin2112   schedule 08.02.2014