2013-01-17 43 views
2

我想添加一個事件處理程序到一個可觀察的集合,每次添加,刪除或更新項目時都會觸發它。如何在ObservableCollection的項目被替換時得到通知

在添加或刪除項目時引發了CollectionChanged事件,但在更換項目時未引發該事件。像這樣的東西

obsList[5] = MyUpdatedCustomObject; 

有什麼建議嗎?

+3

可能的重複:http://stackoverflow.com/questions/7099050/c-sharp-observablecollection-oncollectionchanged-not-firing-when-item-changes –

+2

它不是一個dublicate那裏的用戶指的是隻改變MyUpdatedCustomObject的一個屬性而我在這裏問的是有點不同 – iltzortz

+1

你怎麼聽ObservableCollections改變了事件? – Default

回答

2

我想,你不能做到這一點,索引:

public T this[int index] { get; set; } 

Collection<T>類繼承,這個索引不虛,以改變其行爲!

但實際上,當我在一個非常小的應用程序上測試時,事件會在您的情況下觸發,您有錯誤,請提供一些額外的代碼!

-3
private ObsersvableCollection<Type> _MyCollection = new ObservableCollection<Type>(); 

_MyCollection.CollectionChanged += new NotifyCollectionChangedEventHandler(_MyCollection_CollectionChanged); 

protected void _MyCollection_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e) 
{ 
    switch(e.Action) 
    { 
     case NotifyCollectionChangedAction.Add: 
      //use e.NewItems to get items added.  
     break; 
     case NotifyCollectionChangedAction.Remove: 
      //use e.OldItems to get items removed. 
     break; 

    } 
} 
+1

不包括項目*更新*時需要通知OP的情況。 – Alex

+0

您不需要空的delegatehandler - '_MyCollection.CollectionChanged + = _MyCollection_CollectionChanged;'就足夠了 – Default

相關問題