阻止在ObservableCollection.CollectionChanged事件上添加新Item

时间:2014-11-07 04:44:54

标签: c# .net observablecollection

我需要检查一些条件,然后决定是否将新项目添加到我的收藏中,无论如何我可以阻止添加我的CollectionChanged事件或者它是否为时已晚?实际上我可以修改新的Item但由于运行时异常而无法从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 !
                 }
             }             
        }
    }

1 个答案:

答案 0 :(得分:0)

这里的问题是它已经在集合中添加了。如果我遵循这个,唯一的方法就是从集合中删除它。但这会重新触发您创建的MyyFilter订阅。

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

基本代码就是这样。

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

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

如果您愿意,请继续复制此guys实施。