我正在寻找Linq方式(如List的RemoveAll方法),它可以从我的ObservableCollection中删除所选项目.
我太新了,无法为自己创建扩展方法.有没有办法从ObservableCollection中删除传递Lambda表达式的项目?
我有一个继承自的类,ObservableCollection并添加了一些其他方法,如AddRange和RemoveRange
我的基本方法调用是这样的:
public void AddRange(IEnumerable<T> collection)
{
foreach (var i in collection) Items.Add(i);
OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset));
}
Run Code Online (Sandbox Code Playgroud)
我的问题是我想要访问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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
所以我认为我可以使用NotifyCollectionChangedAction.Add而不是Reset,但是会引发Range actions are not supported异常
public void AddRange(IEnumerable<T> collection)
{
var addedItems …Run Code Online (Sandbox Code Playgroud)