Когда не следует использовать ObservableCollection и Databinding? - PullRequest
1 голос
/ 24 января 2010

комментарий Доптона заставил меня задуматься. В каких ситуациях вы бы не хотели использовать ObservableCollection?

1 Ответ

2 голосов
/ 24 января 2010

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

Обратите внимание, что есть несколько интересных точек перегиба, связанных с размером уведомлений и приоритетом уведомлений, которые влияют на воспринимаемую производительность и реальную производительность (и не так, как вы думаете).

Это основной пример того, почему вы хотите, чтобы ваш интерфейс был свободным: мы печатаем как IList и изменили нашу реализацию на нашу собственную, асинхронную загрузочную коллекцию, которая запускает измененные события коллекции, когда мы загружаем порции данных. Вид не должен знать об этой разнице. Это просто работает.

...