У меня есть (не виртуализированный) ItemsControl, который связывает свой ItemsSource с ObeservableCollection экземпляров ViewModel. Теперь, когда большое количество экземпляров Model загружено, все компоненты ViewModel должны быть добавлены к этой ObservableCollection. Как я могу добавить большое количество ViewModels без зависания потока пользовательского интерфейса?
Я полагаю, что поток пользовательского интерфейса зависает, потому что каждый раз, когда добавляется новый элемент, ItemsControl должен обновляться, выполнять разметку и т.д. снова и снова.
- Должен ли я приостановить привязку, добавить все
предметы, а затем возобновить? Если да, то как?
- Должен ли я переопределить
ObservableCollection для реализации
AddRange, так что только 1 CollectionChanged
Событие запускается для добавления нескольких
Предметы? Или в качестве альтернативы просто заменить
вся коллекция?
- или лучше
добавить каждый элемент отдельно и позвонить
Dispatcher.Invoke для каждого элемента
по отдельности? Так что я бы разблокировал
часто.
Как вы обрабатываете большие динамические списки, которые нельзя виртуализировать?