Кажется, что эти INotifyCollectionChanged
интерфейс допускает обновление, когда несколько объектов были добавлены, таким образом, я не уверен, почему ObservableCollection<T>
не имеет AddRange
. Вы могли сделать дополнительный метод для AddRange
, но это вызовет событие для каждого объекта, который добавляется. Если это не приемлемо, необходимо быть в состоянии наследоваться от ObservableCollection<T>
следующим образом:
public class MyObservableCollection<T> : ObservableCollection<T>
{
// matching constructors ...
bool isInAddRange = false;
protected override void OnCollectionChanged(NotifyCollectionChangedEventArgs e)
{
// intercept this when it gets called inside the AddRange method.
if (!isInAddRange)
base.OnCollectionChanged(e);
}
public void AddRange(IEnumerable<T> items)
{
isInAddRange = true;
foreach (T item in items)
Add(item);
isInAddRange = false;
var e = new NotifyCollectionChangedEventArgs(
NotifyCollectionChangedAction.Add,
items.ToList());
base.OnCollectionChanged(e);
}
}
Это сообщение в блоге должно помочь вам: http://blog.hawkey.org/?p=332
РЕДАКТИРОВАТЬ: Кэшированная версия Google той же страницы , которая фактически ссылается на сообщение форума здесь , которое ссылки на проект Google Code здесь , содержащий код, реализующий распаковку на iOS.