示例#1
0
        /// <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);
        }
示例#2
0
        /// <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);
        }
示例#3
0
        /// <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);
        }
示例#4
0
        /// <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);
        }
示例#5
0
        /// <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);
        }
示例#6
0
        public HohoemaListingPageItemBase()
        {
            ImageUrls = new ReadOnlyObservableCollection <string>(ImageUrlsSource);

            _Disposer = ImageUrls.CollectionChangedAsObservable()
                        .Subscribe(_ =>
            {
                OnPropertyChanged(nameof(FirstImageUrl));
                OnPropertyChanged(nameof(HasImageUrl));
                OnPropertyChanged(nameof(IsMultipulImages));
            });
        }
示例#7
0
        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);
        }