我有一个ObservableCollection
,我通过Add
和Insert
方法添加了商品。
根据调用的方法,我想在我连接到集合的CollectionChanged
处理程序中执行一些特定的操作。
代码如下所示:
var items = new ObservableCollection<DataClass>();
items.CollectionChanged += this.ItemsChanged;
...
private void ItemsChanged(object sender, NotifyCollectionChangedEventArgs args)
{
var action = args.Action;
var insertIndex = args.NewStartingIndex;
...
}
不幸的是,对于action
和NotifyCollectionChangedAction.Add
方法,Add
始终为Insert
。
insertIndex
0
来自Add
次来电,0
当Insert
方法调用0
作为参数时。
有没有办法找出在集合中调用哪些方法?
答案 0 :(得分:2)
在集合级别检查它似乎违反直觉,因为添加只是插入的特殊情况。但是,您可以通过编写两个类来解决此问题:
现在只需使集合类使用MyCustomNotifyCollectionChangedEventArgs而不是NotifyCollectionChangedEventArgs。在事件处理程序中,检查对象是否为MyCustomNotifyCollectionChangedEventArgs类型。如果是,只需将其强制转换并读取您定义的成员的值。
答案 1 :(得分:1)
我知道这确实很老,但是遇到了同样的问题,发现我认为这是更简单的方法。如果是Add,则为args.NewStartingIndex == items.Count。并非如此。
if ( args.NewStartingIndex == Items.Count )
{
//this is an add
}
else
{
//this is an insert
}