private IObservable <Unit> ObserveResourceAdded() { return(AddCommand.ActivateGestures() .SelectMany(x => { var viewModel = _addResourceFactory(_metadata.Select(y => y.Metadata)); _messageService.Post("Add Resource", viewModel); return viewModel.Added; }, (x, y) => y)); }
public ColumnPickerViewModel(string identifier, IColumnsService columnsService, ISchedulerService schedulerService) { _identifier = identifier; _columnsService = columnsService; _schedulerService = schedulerService; _left = new RangeObservableCollection <ColumnPickerItemViewModel>(); _right = new RangeObservableCollection <ColumnPickerItemViewModel>(); _columnsService.Initialised .ObserveOn(schedulerService.TaskPool) .StartWith(new [] { identifier }) .Where(x => x == identifier) .Select(x => { var visible = columnsService.VisibleColumns(identifier) .Select(y => new ColumnPickerItemViewModel(y, ColumnHelper.DisplayName(y))) .ToArray(); var hidden = columnsService.HiddenColumns(identifier) .Select(y => new ColumnPickerItemViewModel(y, ColumnHelper.DisplayName(y))) .ToArray(); return(new VisibleColumns(visible, hidden)); }) .ObserveOn(schedulerService.Dispatcher) .Subscribe(x => { _left.Clear(); _right.Clear(); _left.AddRange(x.Hidden); _right.AddRange(x.Visible); }) .DisposeWith(this); AddCommand = ReactiveCommand.Create(CanAddObservable()) .DisposeWith(this); RemoveCommand = ReactiveCommand.Create(CanRemoveObservable()) .DisposeWith(this); MoveupCommand = ReactiveCommand.Create(CanMoveupObservable()) .DisposeWith(this); MovedownCommand = ReactiveCommand.Create(CanMovedownObservable()) .DisposeWith(this); AddCommand.ActivateGestures() .Subscribe(x => Add()) .DisposeWith(this); RemoveCommand.ActivateGestures() .Subscribe(x => Remove()) .DisposeWith(this); MoveupCommand.ActivateGestures() .Subscribe(x => Moveup()) .DisposeWith(this); MovedownCommand.ActivateGestures() .Subscribe(x => Movedown()) .DisposeWith(this); }