private void OnDateLimitChanged() { _isInternalSet = true; if (SelectedDates == null) { SelectedDates = new ObservableCollection <DateTime>(); } if (SelectedDate != null && MinDate != null && SelectedDate < MinDate) { var date = (DateTime)SelectedDate; if (SelectedDates.Contains(date)) { SelectedDates.Remove(date); } SelectedDate = MinDate; SelectedDates.Add((DateTime)SelectedDate); } else if (SelectedDate != null && MaxDate != null && SelectedDate > MaxDate) { var date = (DateTime)SelectedDate; if (SelectedDates.Contains(date)) { SelectedDates.Remove(date); } SelectedDate = MaxDate; SelectedDates.Add((DateTime)SelectedDate); } if (SelectedDates != null) { for (int i = SelectedDates.Count - 1; i >= 0; i--) { var date = SelectedDates[i]; if (date < MinDate || date > MaxDate) { SelectedDates.RemoveAt(i); } } } UpdateDays(CurrentYear, CurrentMonth); UpdateMonths(CurrentYear, CurrentMonth); UpdateYears(CurrentYear, CurrentMonth); }
private void DayPresenter_Selected(object sender, SelectedDateChangedEventArgs e) { var dateTime = (DateTime)e.SelectedDate; _isInternalSet = true; if (SelectedDates == null) { SelectedDates = new ObservableCollection <DateTime>(); } switch (Mode) { case CalendarXMode.MultipleDate: if (!SelectedDates.Any(x => x.Date.Equals(dateTime))) { SelectedDates.Add(dateTime); } break; case CalendarXMode.Date: SelectedDates.Clear(); SelectedDates.Add(dateTime); break; case CalendarXMode.DateRange: for (int i = 0; i < SelectedDates.Count - 1; i++) { SelectedDates.RemoveAt(0); } SelectedDates.Add(dateTime); break; } SelectedDate = dateTime; UpdateDays(dateTime.Year, dateTime.Month); _isInternalSet = false; }