Интерфейс для реализации - INotifyCollectionChanged. Этот интерфейс взаимодействует с привязкой WPF через событие CollectionChanged - аргумент этого события (NotifyCollectionChangedEventArgs) может сообщать пакеты элементов, которые были изменены.
Один из способов сделать это - реализовать свой собственный MyBatchObservableColleciton, получить или (лучше) встроить List (или любую другую подходящую коллекцию). Реализуйте методы для изменения коллекции Innter и запишите все эти изменения. Когда вы будете готовы зафиксировать все свои изменения в WPF, просто отправьте список изменений. Вот пример того, что вы можете сделать (реализуя только функцию «Добавить» в вашу коллекцию):
class BatchObservableColleciton<T> : INotifyCollectionChanged, IEnumerable
{
public event NotifyCollectionChangedEventHandler CollectionChanged;
private List<T> _list;
private List<T> _addedItems;
public BatchObservableColleciton( ) {
_list = new List<T>( );
_addedItems = new List<T>( );
}
public IEnumerator GetEnumerator( )
{
return _list.GetEnumerator( );
}
public void Add( T item )
{
_list.Add( item );
_addedItems.Add( item );
}
public void commit( ) {
if( CollectionChanged != null ) {
CollectionChanged( this, new NotifyCollectionChangedEventArgs(
NotifyCollectionChangedAction.Add, _addedItems ) );
}
_addedItems.Clear( );
}
}
Никогда не пробовал сам, но я думаю, что это путь. Google для Custom & ObservableCollection. Хотя это и не точно, существует несколько реализаций.