.net 使用ObservableCollection订阅CollectionChanged事件

.net 使用ObservableCollection订阅CollectionChanged事件,.net,wpf,vb.net,observablecollection,.net,Wpf,Vb.net,Observablecollection,当我创建一个可观察集合时,如何在添加或删除项目时运行附加逻辑 Public Property Employees As ObservableCollection(Of employee) Get If _employees Is Nothing Then _employees = New ObservableCollection(Of employee) AddHandler _employees.CollectionCha

当我创建一个
可观察集合
时,如何在添加或删除项目时运行附加逻辑

Public Property Employees As ObservableCollection(Of employee)
    Get
        If _employees Is Nothing Then
            _employees = New ObservableCollection(Of employee)
            AddHandler _employees.CollectionChanged, AddressOf OnEmployeesChanged
        End If
        Return _employees 
    End Get
    Set(ByVal value As ObservableCollection(Of employee))
        _employees = value
    End Set
End Property

Private _employees As ObservableCollection(Of employee)

Protected Sub OnEmployeesChanged()
   'addtional logic...
End Sub
当我打电话时

Employees.Add

-->一个被解雇的员工不会被解雇,塞特也不会

员工必须通知集合已更改(WPF UI绑定到该集合),但我不想使用两行代码触发事件

_employees.Add
RaisePropertyChanged("Employees")

属性的结构应该如何处理这个问题?

我不知道VB,但这里是c#,我相信您可以翻译它

TheList.CollectionChanged += TheList_CollectionChanged;

private void TheList_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
    {
        if (e.NewItems != null)
        {
            foreach (string model in e.NewItems)
            {
              //do something when an item is added to the collection
            }
        }
        if (e.OldItems != null)
        {
            foreach (string model in e.OldItems)
            {
               //do something when an item is removed here
            }
        }
    }

在将任何项目添加到集合之前,请确保注册CollectionChanged事件。您的代码应该有效;您是否正确实施了方法
OnEmployeesChanged
?我的意思是该方法的签名应该是
受保护的Sub-OnEmployeesChanged(发送者作为对象,e作为NotifyCollectionChangedEventArgs)
TheList.CollectionChanged += TheList_CollectionChanged;

private void TheList_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
    {
        if (e.NewItems != null)
        {
            foreach (string model in e.NewItems)
            {
              //do something when an item is added to the collection
            }
        }
        if (e.OldItems != null)
        {
            foreach (string model in e.OldItems)
            {
               //do something when an item is removed here
            }
        }
    }