/// <summary>Observe CollectionChanged:Replace.</summary> public static IObservable <OldNewPair <T[]> > ObserveReplaceChangedItems <T>(this ReadOnlyObservableCollection <T> source) { var result = source.CollectionChangedAsObservable() .Where(e => e.Action == NotifyCollectionChangedAction.Replace) .Select(e => new OldNewPair <T[]>(e.OldItems.Cast <T>().ToArray(), e.NewItems.Cast <T>().ToArray())); return(result); }
/// <summary>Observe CollectionChanged:Reset.</summary> public static IObservable <Unit> ObserveResetChanged <T>(this ReadOnlyObservableCollection <T> source) { var result = source.CollectionChangedAsObservable() .Where(e => e.Action == NotifyCollectionChangedAction.Reset) .Select(_ => new Unit()); return(result); }
/// <summary>Observe CollectionChanged:Replace and take single item.</summary> public static IObservable <OldNewPair <T> > ObserveReplaceChanged <T>(this ReadOnlyObservableCollection <T> source) { var result = source.CollectionChangedAsObservable() .Where(e => e.Action == NotifyCollectionChangedAction.Replace) .Select(e => new OldNewPair <T>((T)e.OldItems[0], (T)e.NewItems[0])); return(result); }
/// <summary>Observe CollectionChanged:Remove and take single item.</summary> public static IObservable <T> ObserveRemoveChanged <T>(this ReadOnlyObservableCollection <T> source) { var result = source.CollectionChangedAsObservable() .Where(e => e.Action == NotifyCollectionChangedAction.Remove) .Select(e => (T)e.OldItems[0]); return(result); }
/// <summary>Observe CollectionChanged:Add.</summary> public static IObservable <T[]> ObserveAddChangedItems <T>(this ReadOnlyObservableCollection <T> source) { var result = source.CollectionChangedAsObservable() .Where(e => e.Action == NotifyCollectionChangedAction.Add) .Select(e => e.NewItems.Cast <T>().ToArray()); return(result); }
public HohoemaListingPageItemBase() { ImageUrls = new ReadOnlyObservableCollection <string>(ImageUrlsSource); _Disposer = ImageUrls.CollectionChangedAsObservable() .Subscribe(_ => { OnPropertyChanged(nameof(FirstImageUrl)); OnPropertyChanged(nameof(HasImageUrl)); OnPropertyChanged(nameof(IsMultipulImages)); }); }
public TodoApp() { _todoItems = new ObservableCollection <TodoItem>(); AllTodoItems = new ReadOnlyObservableCollection <TodoItem>(_todoItems); ActiveTodoItems = AllTodoItems.ToFilteredReadOnlyObservableCollection(x => !x.Completed.Value).AddTo(_disposables); CompletedTodoitems = AllTodoItems.ToFilteredReadOnlyObservableCollection(x => x.Completed.Value).AddTo(_disposables); IsCompletedAllItems = AllTodoItems.ObserveElementProperty(x => x.Completed) .ToUnit() .Merge(AllTodoItems.CollectionChangedAsObservable().ToUnit()) .Throttle(TimeSpan.FromMilliseconds(10)) .Select(_ => AllTodoItems.Count != 0 && AllTodoItems.All(x => x.Completed.Value)) .ToReadOnlyReactivePropertySlim() .AddTo(_disposables); }