Exemplo n.º 1
0
 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);
 }
Exemplo n.º 2
0
        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;
        }