2012-11-15 63 views
2

我有一個XamDataGrid,它綁定到一個可觀察集合。由於XamDataGrid是可編輯的,因此可以添加/編輯/刪除記錄。我已實施CollectionChanged & PropertyChanged事件。ObservableCollection的CollectionChanged事件未觸發

CollectionChanged事件包含以下代碼:

 if (e.Action == NotifyCollectionChangedAction.Remove || e.Action == NotifyCollectionChangedAction.Add) 
     { 
      if (e.OldItems != null) 
      { 
       // Detach the event handler from current instance; 
       foreach (BusinessTelephone oldItem in e.OldItems) 
       { 
        if (oldItem is INotifyPropertyChanged) 
        { 
         (oldItem as INotifyPropertyChanged).PropertyChanged -= new PropertyChangedEventHandler(PhoneDetails_PropertyChanged); 
        } 
       } 
      } 

      if (e.NewItems != null) 
      { 
       // Attach the event handler to the new instance; 
       foreach (BusinessTelephone newItem in e.NewItems) 
       { 
        if (newItem is INotifyPropertyChanged) 
        { 
         (newItem as INotifyPropertyChanged).PropertyChanged += new PropertyChangedEventHandler(PhoneDetails_PropertyChanged); 
        } 
       } 
      } 
     } 

所有這一切工作正常。

我有一個奇怪的問題,下面給出。

當我在網格中添加一條記錄,並從電網刪除它,我通過收集

防爆循環從集合中移除的項目:PhoneDetailsCollection.Remove(項目);

現在,當我添加另一條記錄時,CollectionChanged事件未被觸發。

我在這裏錯過了什麼嗎?任何幫助,高度讚賞...

回答

0

e.Action可能是NotifyCollectionChangedAction.Remove或NotifyCollectionChangedAction.Add以外的東西。它可能會通過「重置」,「移動」或「替換」來提高事件。無論發生什麼行爲,我都會仔細檢查您是否正在處理事件。

相關問題