から継承し、ObservableCollection
およびなどのいくつかの追加メソッドを追加するクラスがAddRange
ありますRemoveRange
私の基本メソッド呼び出しは次のとおりです。
public void AddRange(IEnumerable<T> collection)
{
foreach (var i in collection) Items.Add(i);
OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset));
}
これに関する私の問題は、コレクション内のアイテムにアクセスしe.NewItems
たりe.OldItems
、イベントでアクションを実行したりしたいのですが、アクションがこれらの値を渡さないことですCollectionChanged
NotifyCollectionChangedAction.Reset
void Instances_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
{
if (e.NewItems != null) // e.NewItems is always null
{
foreach (var item in e.NewItems)
{
if (item is EventInstanceModel)
((EventInstanceModel)item).ParentEvent = this;
}
}
}
NotifyCollectionChangedAction.Add
だから私は代わりにを使うことができると思ったが、それは例外Reset
をスローするRange actions are not supported
public void AddRange(IEnumerable<T> collection)
{
var addedItems = collection.ToList();
foreach (var i in addedItems) Items.Add(i);
OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, addedItems));
}
私の質問は、どのように CollectionChanged イベントを発生させ、新しいアイテム リストまたは古いアイテム リストに渡すことができるかということです。