Когда вы хотите лучше контролировать уведомления, отправляемые ObservableCollection. Пример. Реализация по умолчанию, хотя она поддерживает добавление диапазонов элементов, просто сбрасывает (я полагаю) сброс всей коллекции, а не частичную еду, выбрасывая одно уведомление со всеми новыми элементами на нем. Частично это связано с тем, что по умолчанию CollectionView в WPF не поддерживает уведомления INotifyCollectionChanged с размерами> 1 (если вы его выбрасываете), поэтому для этого нет особой мотивации. Однако если вы используете стороннюю сетку, такую как Xceed, она имеет деривацию CollectionView, которая поддерживает поддержку произвольных размеров уведомлений. Это означает, что когда вы объединяете данные в список, вы можете получить довольно приятное снижение производительности, сгруппировав уведомления.
Обратите внимание, что есть несколько интересных точек перегиба, связанных с размером уведомлений и приоритетом уведомлений, которые влияют на воспринимаемую производительность и реальную производительность (и не так, как вы думаете).
Это основной пример того, почему вы хотите, чтобы ваш интерфейс был свободным: мы печатаем как IList и изменили нашу реализацию на нашу собственную, асинхронную загрузочную коллекцию, которая запускает измененные события коллекции, когда мы загружаем порции данных. Вид не должен знать об этой разнице. Это просто работает.