/// <summary> /// Converts PropertyChanged to an observable sequence. /// </summary> public static IObservable <PropertyChangedEventArgs> PropertyChangedAsObservable <T>(this T subject) where T : INotifyPropertyChanged => InternalObservable.FromEvent <PropertyChangedEventHandler, PropertyChangedEventArgs>( h => (sender, e) => h(e), h => subject.PropertyChanged += h, h => subject.PropertyChanged -= h);
/// <summary> /// Converts CanExecuteChanged to an observable sequence. /// </summary> public static IObservable <EventArgs> CanExecuteChangedAsObservable <T>(this T source) where T : ICommand => InternalObservable.FromEvent <EventHandler, EventArgs>( h => (sender, e) => h(e), h => source.CanExecuteChanged += h, h => source.CanExecuteChanged -= h);
/// <summary> /// Converts ErrorsChanged to an observable sequence. /// </summary> public static IObservable <DataErrorsChangedEventArgs> ErrorsChangedAsObservable <T>(this T subject) where T : INotifyDataErrorInfo => InternalObservable.FromEvent <EventHandler <DataErrorsChangedEventArgs>, DataErrorsChangedEventArgs>( h => (sender, e) => h(e), h => subject.ErrorsChanged += h, h => subject.ErrorsChanged -= h);
/// <summary> /// Converts CollectionChanged to an observable sequence. /// </summary> public static IObservable <NotifyCollectionChangedEventArgs> CollectionChangedAsObservable <T>(this T source) where T : INotifyCollectionChanged => InternalObservable.FromEvent <NotifyCollectionChangedEventHandler, NotifyCollectionChangedEventArgs>( h => (sender, e) => h(e), h => source.CollectionChanged += h, h => source.CollectionChanged -= h);