public static IDisposable Follow <T>(this ICollection <T> collection, INotifyCollectionChanged followCollection) { CompositeDisposable disposable = new CompositeDisposable(); disposable.Add(followCollection.AddedItems <T>().Subscribe(i => collection.Add(i))); disposable.Add(followCollection.RemovedItems <T>().Subscribe(i => collection.Remove(i))); disposable.Add(followCollection.Cleared().Subscribe(i => collection.Clear())); return(disposable); }