public CalendarViewModel( IMvxNavigationService navigationService, ITimeProvider timeProvider, IMeasureService measureService ) { _navigationService = navigationService ?? throw new ArgumentNullException(nameof(navigationService)); _timeProvider = timeProvider ?? throw new ArgumentNullException(nameof(timeProvider)); _measureService = measureService ?? throw new ArgumentNullException(nameof(measureService)); AddCommand = ReactiveCommand.CreateFromTask(Add); MonthShowed = ReactiveCommand.Create <MonthViewModel, MonthViewModel>(v => v); MonthShowed .Where(v => v != null) .ToProperty(this, v => v.Month, out _month); this.WhenAnyValue(v => v.Month) .Where(v => v != null) .Take(1) .Subscribe(v => v.SelectFirstDay()); this.WhenAnyValue(v => v.Month) .Where(v => v != null) .Select(v => v.Month.Date) .ToProperty(this, v => v.MonthDate, out _monthDate, _timeProvider.UtcNow); }
public CalendarViewModel( IMvxNavigationService navigationService, ITimeProvider timeProvider ) { _navigationService = navigationService ?? throw new ArgumentNullException(nameof(navigationService)); AddCommand = ReactiveCommand.CreateFromTask(Add); MonthShowed = ReactiveCommand.Create <MonthViewModel, MonthViewModel>(v => v); MonthShowed .Where(v => v != null) .ToProperty(this, v => v.Month, out _month); this.WhenAnyValue(v => v.Month) .Where(v => v != null) .Take(1) .Subscribe( v => { var day = v.Days.First(c => c.Day == timeProvider.UtcNow.Day); v.DaySelectedCommand.Execute(day); }); this.WhenAnyValue(v => v.Month) .Where(v => v != null) .Select(v => v.Month.Date) .ToProperty(this, v => v.MonthDate, out _monthDate, timeProvider.UtcNow); }