阻止在ObservableCollection.CollectionChanged事件中添加新项

本文关键字:添加 新项 事件 CollectionChanged ObservableCollection | 更新日期: 2023-09-27 18:29:34

我需要检查一些条件,然后决定是否将新项添加到我的集合中,我是否可以阻止在CollectionChanged事件中添加,或者现在已经太晚了?实际上,我可以修改新项,但由于运行时异常,无法将其从NewItems集合中删除:

    protected void MyFilter(object sender, NotifyCollectionChangedEventArgs e)
    {                   
         f (e.Action == NotifyCollectionChangedAction.Add)
         {
             foreach (Item item in e.NewItems)
             {
                 if (!Item.CanBeAdded())
                 {
                      //Prevent adding the Item !
                 }
             }             
        }
    }

阻止在ObservableCollection.CollectionChanged事件中添加新项

这里的问题是它已经添加到集合中了。如果我这样做的话,唯一的方法就是把它从收藏中删除。但这会重新触发您创建的MyyFilter订阅。

如果这个集合绑定在网格上或任何可以从UI创建项目的地方,那么我建议您创建一个自定义的可观察集合。

基本代码是这样的。

public class MyObservableCollection<T> : ICollection<T>
, INotifyCollectionChanged
, INotifyPropertyChanged
{
}

在ICollection的Add方法上实现验证逻辑。

如果你想的话,直接复制这个家伙的实现。