更改集合时触发方法

Mit*_*ité 3 c# wpf binding

我有一个使用此集合的绑定:

private RangeObservableCollection<Item> _allItems;

public RangeObservableCollection<Item> AllItems
            { 
                get { return _allItems; }
                set { _allItems = value; }
            }
Run Code Online (Sandbox Code Playgroud)

RangeObservarbleCollection是一个集合,仅在调用AddRange方法时仅抛出一个集合已更改的通知.

我有另一个集合,其项目取决于AllItems集合的项目.

private RangeObservableCollection<Item> _commonItems;
Run Code Online (Sandbox Code Playgroud)

我希望每当AllItems集合被更改为触发一个方法,该方法执行一些计算并更改CommonItems集合中的项目.我尝试在AllItems集合的set方法中触发它,但Value的类型集合不是Item类型.

emy*_*bob 5

您可以将事件附加到集合上,如下所示:

_allItems.CollectionChanged += new NotifyCollectionChangedEventHandler(_allItems_CollectionChanged)

protected void _allItems_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
{
     switch (e.Action)
         {
             case NotifyCollectionChangedAction.Add:
                //do stuff;
                 break;
             case NotifyCollectionChangedAction.Remove:
                //do stuff
                 break;
         }

}
Run Code Online (Sandbox Code Playgroud)