2

我有一个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);
                    }
                }
            }
        }

所有这些工作正常。

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

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

例如:PhoneDetailsCollection.Remove(item);

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

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

4

1 回答 1

0

e.Action 可以是 NotifyCollectionChangedAction.Remove 或 NotifyCollectionChangedAction.Add 以外的其他内容。它可能会使用“重置”、“移动”或“替换”来引发事件。无论发生何种操作,我都会仔细检查您是否正在处理该事件。

于 2012-11-28T22:18:51.750 回答