如何在NotifyCollectionChangedEventArgs中获得已更改的项

本文关键字:NotifyCollectionChangedEventArgs | 更新日期: 2023-09-27 17:51:11

我已经创建了一个ObservableCollection,每当集合(T: INPC)中的对象的属性发生变化时,都会触发一个CollectionChangedEvent。我想知道T的哪个属性触发了CollectionChangedEvent,所以我尝试了以下操作:

    void item_PropertyChanged(object sender, PropertyChangedEventArgs e)
    {
        OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset, e));
    }

我将PropertyChangedEventArgs传递给NotifyCollectionChangedEventArgs的构造函数。

根据智能感知,第二个构造函数接受两个参数:NotifyCollectionChangedAction和一个名为"changedObject"的对象,该对象被描述为"受更改影响的项"。

所以我认为我可以在CollectionChangedEventHandler中抓取那个对象并检查PropertyName,但是哦!惊喜!NotifyCollectionChangedEventArgs不暴露"ChangedObject"属性(我可以看到Action, NewItems, OldItems, NewStartingIndex, OldStartingIndex)。

对如何实现这一点有什么想法吗?顺便说一下,它有什么用构造NotifyCollectionChangedEventArgs与一个对象,你不能访问以后?

如何在NotifyCollectionChangedEventArgs中获得已更改的项

当您使用NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction, object)构造函数时,changedItem将在NewItems集合中(如果您指定NotifyCollectionChangedAction.Add)或OldItems集合中(如果您指定NotifyCollectionChangedAction.Remove)。

如果指定了NotifyCollectionChangedAction.Reset,则changedItem参数必须为null,否则将得到一个ArgumentException

如果您指定任何其他NotifyCollectionChangedAction值,您也将获得ArgumentException

相关文章:
  • 没有找到相关文章