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 に答える