6

アイテムが ObservableCollection に追加されたときにイベントを発生させる方法はありますが、アイテムが削除されたときではありませんか?

実際のイベントはないと思いますが、おそらく CollectionChanged イベントをフィルタリングする方法はありますか?

4

2 に答える 2

15

CollectionChangedイベントには、コレクションに対して実行されたアクション (追加や削除など) や影響を受けたアイテムなどの情報が含まれます。

ハンドラーにチェックを追加して、実行された場合にのみ目的のアクションAddを実行します。

ObservableCollection<T> myObservable = ...;
myObservable.CollectionChanged += (sender, e) =>
{
    if (e.Action == NotifyCollectionChangedAction.Add)
    {
        // do stuff
    }
};
于 2013-02-24T20:59:11.030 に答える
1

ObservableCollectionクラスをサブクラス化し、独自のItemAddedイベントを作成すると、うまくいくはずです。

public class MyObservableCollection<T> : ObservableCollection<T>
{
    public event EventHandler<NotifyCollectionChangedEventArgs> ItemAdded;

    public MyObservableCollection()
    {
        CollectionChanged += MyObservableCollection_CollectionChanged;
    }

    void MyObservableCollection_CollectionChanged(object sender,            NotifyCollectionChangedEventArgs e)
    {
        if (e.Action == NotifyCollectionChangedAction.Add)
            ItemAdded(sender, e);
    }
}
于 2013-02-24T19:50:50.843 に答える