public ObservableMvvmCommand( Func <TCommand, IObservable <TObservable> > factory, ISchedulers schedulers, IScheduler executionScheduler, string name, ICanExecuteStrategy <TCommand> canExecuteStrategy, Func <IObserver <TObservable> > doObserver = null, IScheduler doScheduler = null, Func <CancellationToken, Exception, Task> errorTask = null) : base(schedulers, name, canExecuteStrategy) { if (executionScheduler == null) { throw new ArgumentNullException("executionScheduler"); } Factory = factory; if (errorTask == null) { _hasDefaultErrorTask = true; errorTask = (ct, ex) => Task.FromResult(true); } if (doObserver == null) { doObserver = () => Observer.Create <TObservable>(_ => { }); } DoObserver = doObserver; DoScheduler = doScheduler ?? schedulers.Immediate; ErrorTask = errorTask; _executionScheduler = executionScheduler; _executionDisposable = new SerialDisposable().DisposeWith(Disposables); }
public Command(Action <T> action, ISchedulers schedulers, string name, ICanExecuteStrategy <T> canExecuteStrategy) : base(schedulers, name, canExecuteStrategy) { if (action == null) { throw new ArgumentNullException("action"); } Action = action; }
protected CommandBase(ISchedulers schedulers, string name, ICanExecuteStrategy <T> canExecuteStrategy) { if (canExecuteStrategy == null) { throw new ArgumentNullException("canExecuteStrategy"); } if (string.IsNullOrEmpty(name)) { throw new ArgumentNullException("name"); } Name = name; _canExecuteStrategy = canExecuteStrategy; _disposable = _canExecuteStrategy.CanExecuteChanged .ObserveOn(schedulers.Dispatcher) .Subscribe(b => RaiseCanExecute()); }
public ObserveCanExecuteStrategy(IObservable <bool> canExecuteObservable, ICanExecuteStrategy <T> innerCanExecuteStrategy) { if (canExecuteObservable == null) { throw new ArgumentNullException("canExecuteObservable"); } if (innerCanExecuteStrategy == null) { throw new ArgumentNullException("innerCanExecuteStrategy"); } CanExecuteObservable = canExecuteObservable; InnerCanExecuteStrategy = innerCanExecuteStrategy; _observableCanExecuteChanged = new Subject <Unit>(); _subscription = canExecuteObservable.Subscribe(b => { _currentCanExecute = b; _observableCanExecuteChanged.OnNext(Unit.Default); }, e => { }); }
public ObservableMvvmCommandWithObservableCanExecute( Func <TCommand, IObservable <TObservable> > factory, ISchedulers schedulers, IScheduler executionScheduler, string name, IObservable <bool> observablePredicate, ICanExecuteStrategy <TCommand> canExecuteStrategy, Func <IObserver <TObservable> > doObserver = null, IScheduler doScheduler = null, Func <CancellationToken, Exception, Task> errorTask = null) : base( factory, schedulers, executionScheduler, name, new ObserveCanExecuteStrategy <TCommand>(observablePredicate, canExecuteStrategy), doObserver, doScheduler, errorTask) { }
public CommandWithObservableCanExecute(Action <T> action, IObservable <bool> observablePredicate, ISchedulers schedulers, string name, ICanExecuteStrategy <T> canExecuteStrategy) : base(action, schedulers, name, new ObserveCanExecuteStrategy <T>(observablePredicate, canExecuteStrategy)) { }