0

我做了一個ObservableCollection < T>,它在每次集合中的對象的屬性(T:INPC)發生更改時觸發CollectionChangedEvent。我想知道其中T的財產已經打響了CollectionChangedEvent,所以我嘗試了以下內容:如何獲取NotifyCollectionChangedEventArgs中已更改的項目?

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

我通過PropertyChangedEventArgs e將NotifyCollectionChangedEventArgs的構造。

根據Intellisense的說法,第二個構造函數有兩個參數:一個NotifyCollectionChangedAction和一個名爲「changedObject」的對象,它被描述爲「受變化影響的項目」。

所以我認爲我可以抓住CollectionChangedEventHandler中的對象並檢查PropertyName,但哦!驚喜! NotifyCollectionChangedEventArgs不公開「ChangedObject」屬性(我可以看到Action,NewItems,OldItems,NewStartingIndex,OldStartingIndex)。

有關如何實現此目的的任何想法?順便說一下,它有什麼用來構造NotifyCollectionChangedEventArgs和一個以後無法訪問的對象?

+1

提示:NewItems和OldItems。 –

回答

2

當您使用NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction, object)構造函數中,changedItem要麼是NewItems集合(如果指定NotifyCollectionChangedAction.Add)或OldItems集合(如果指定NotifyCollectionChangedAction.Remove)英寸

如果您指定NotifyCollectionChangedAction.Reset,則changedItem參數必須爲null,否則您將獲得ArgumentException

如果您指定了其他NotifyCollectionChangedAction值,您還將獲得ArgumentException

相關問題