/// <summary> /// Creates observable sequence from <paramref name="source"/> ListChanged events. /// Observable will start with <see cref="NotifyListChangedAction.Reset"/> notification containing current snapshot of items. /// </summary> public static IObservable <NotifyListChangedEventArgs <T> > AsBehaviorObservable <T>(this INotifyListChanged <T> source) { return(Observable.Defer(() => { var items = source.GetSnapshot(); return Observable.Return(new NotifyListChangedEventArgs <T>(NotifyListChangedAction.Reset, items, items)); }) .Concat( source.AsObservable() )); }