internal void Update(int year, int month, IEnumerable <DateTime> selectedDates) { if (!_isItemsInitialized) { CalendarXItemModels = new ObservableCollection <CalendarXItemModel>(); } var currentDay = new DateTime(year, month, 1); var dayOfWeek = currentDay.DayOfWeek; var preDelta = dayOfWeek - FirstDayOfWeek; preDelta = preDelta < 0 ? (preDelta + 7) : preDelta; currentDay = currentDay.AddDays(-preDelta); for (var i = 0; i < 42; i++) { CalendarXItemModel dayItem = null; if (!_isItemsInitialized) { dayItem = new CalendarXItemModel(); CalendarXItemModels.Add(dayItem); } else { dayItem = CalendarXItemModels[i]; } dayItem.Content = currentDay.Day; if (IsDateAvailable(currentDay)) { dayItem.IsEnabled = true; dayItem.IsChecked = selectedDates == null ? false : selectedDates.Any(x => x.Equals(currentDay)); dayItem.Date = currentDay; dayItem.IsDownplay = !(currentDay.Year == year && currentDay.Month == month); dayItem.IsToday = IsTodayHighlighted ? IsToday(currentDay) : false; dayItem.IsInRange = Mode == CalendarXMode.DateRange ? IsInRange(currentDay, selectedDates?.ToArray()) : false; } else { dayItem.IsEnabled = false; } currentDay = currentDay.AddDays(1); } _isItemsInitialized = true; }
internal void Update(int year, int month) { if (!_isItemsInitialized) { CalendarXItemModels = new ObservableCollection <CalendarXItemModel>(); } var startYear = year - 7; if (startYear < 1) { startYear = 1; } for (var i = 0; i < 15; i++) { var currentYear = new DateTime(startYear + i, month, 1); CalendarXItemModel dayItem = null; if (!_isItemsInitialized) { dayItem = new CalendarXItemModel(); CalendarXItemModels.Add(dayItem); } else { dayItem = CalendarXItemModels[i]; } dayItem.Content = (startYear + i).ToString("D4"); if (IsDateAvailable(currentYear)) { dayItem.IsEnabled = true; dayItem.IsChecked = year == (startYear + i); dayItem.Date = currentYear; dayItem.IsDownplay = false; dayItem.IsToday = false; dayItem.IsInRange = false; } else { dayItem.IsEnabled = false; } } _isItemsInitialized = true; }
internal void Update(int year, int month) { if (!_isItemsInitialized) { CalendarXItemModels = new ObservableCollection <CalendarXItemModel>(); } for (var i = 0; i < 12; i++) { var currentMonth = new DateTime(year, i + 1, 1); CalendarXItemModel dayItem = null; if (!_isItemsInitialized) { dayItem = new CalendarXItemModel() { Content = CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(i + 1), }; CalendarXItemModels.Add(dayItem); } else { dayItem = CalendarXItemModels[i]; } if (IsDateAvailable(currentMonth)) { dayItem.IsEnabled = true; dayItem.IsChecked = month == i + 1; dayItem.Date = currentMonth; dayItem.IsDownplay = false; dayItem.IsToday = false; dayItem.IsInRange = false; } else { dayItem.IsEnabled = false; } } _isItemsInitialized = true; }