ObservableCollection的CollectionChanged事件未触发

时间:2012-11-15 13:03:20

标签: inotifycollectionchanged

我有一个XamDataGrid绑定到一个可观察的集合。由于XamDataGrid可编辑,因此可以添加/编辑/删除记录。我已经实施了CollectionChanged& PropertyChanged事件。

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);
                    }
                }
            }
        }

所有这一切都很好。

我有一个奇怪的问题,如下所示。

当我在网格中添加记录并从网格中删除它时,我通过循环遍历集合从集合中删除该项目

  

Ex:PhoneDetailsCollection.Remove(item);

现在,当我添加另一条记录时,CollectionChanged事件不会被解雇。

我在这里错过了什么吗?任何帮助都非常感谢...

1 个答案:

答案 0 :(得分:0)

e.Action可能不是NotifyCollectionChangedAction.Remove或NotifyCollectionChangedAction.Add。可能是通过“重置”,“移动”或“替换”来提升事件。无论采取何种行动,我都会仔细检查您是否正在处理此事件。