我首先在应用程序中使用EntityFramework数据库。我想以某种方式收到有关ViewModel中EntityCollection更改的通知。它不直接支持INotifyCollectionChanged(为什么?),而且我还没有成功找到其他解决方案。

这是我的最新尝试,因为ListChanged事件似乎没有引发,所以不起作用:

public class EntityCollectionObserver<T> : ObservableCollection<T>, INotifyCollectionChanged where T : class
{
    public event NotifyCollectionChangedEventHandler CollectionChanged;

    public EntityCollectionObserver(EntityCollection<T> entityCollection)
        : base(entityCollection)
    {
        IBindingList l = ((IBindingList)((IListSource)entityCollection).GetList());
        l.ListChanged += new ListChangedEventHandler(OnInnerListChanged);
    }

    private void OnInnerListChanged(object sender, ListChangedEventArgs e)
    {
        if (CollectionChanged != null)
            CollectionChanged(this, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset));
    }
}

有谁知道我如何观察EntityCollection的变化?

最佳答案

你有没有尝试处理
AssociationChanged在对相关端进行更改时发生。 (继承自RelatedEnd。)

它提供了显示元素是添加还是删除的参数,还公开了该元素。

10-07 22:49