private CalendarMonthViewDayModel GetTodayModel() { CalendarMonthViewDayModel dayModel = null; foreach (KeyValuePair <DateTime, ContentControl> control in _DayControls) { CalendarMonthViewDayModel model = control.Value.DataContext as CalendarMonthViewDayModel; if (model.IsToday) { dayModel = model; break; } } return(dayModel); }
private CalendarMonthViewDayModel GetDayModel(DateTime dateTime) { CalendarMonthViewDayModel dayModel = null; foreach (KeyValuePair <DateTime, ContentControl> control in _DayControls) { CalendarMonthViewDayModel model = control.Value.DataContext as CalendarMonthViewDayModel; if (model.DateTime.Year == dateTime.Year && model.DateTime.Month == dateTime.Month && model.DateTime.Day == dateTime.Day) { dayModel = model; break; } } return(dayModel); }
/// <summary> /// Initializes a new instance of the <see cref="CalendarMonthView"/> class. /// </summary> public CalendarMonthView() { InitializeComponent(); DayItemTemplate = (ControlTemplate)Resources["DayItemTemplate"]; for (int row = 0; row < 6; row++) { for (int column = 0; column < 7; column++) { CalendarMonthViewDayModel model = new CalendarMonthViewDayModel { MonthPosition = new DayInMonthViewPosition(row, column, IsInPortrait) }; ContentControl dayControl = new ContentControl { DataContext = model }; dayControl.SetBinding(ContentControl.TemplateProperty, new Binding("DayItemTemplate") { Source = this }); dayControl.Tap += new EventHandler <GestureEventArgs>(DayControl_Tap); Grid.SetRow(dayControl, row); Grid.SetColumn(dayControl, column); CalendarGrid.Children.Add(dayControl); } } SetValue(DateProperty, new DateTime(DateTime.Today.Year, DateTime.Today.Month, 1)); UpdateDayNames(); CalendarMonthViewDayModel todayModel = GetTodayModel(); if (todayModel != null) { CurrentDay = todayModel.DateTime; } }
public void UpdateView() { Debug.WriteLine("UpdateView()"); if (Date > DateTime.MinValue) { DateTime calendarDay = Date.AddDays(DayOfWeek.Sunday - Date.DayOfWeek).Date; int rowLenght = 7; ObservableCollection <Entry> entries; EntryDataContext.Instance.TryGetAnniversaryEntries(Date.Year, Date.Month, out entries); _DayControls.Clear(); VisibleRow = 0; for (int row = 0; row < 6; row++) { bool isRowCollapsed = row > 0 && calendarDay.Month != Date.Month; // Hide last row if not needed VisibleRow = isRowCollapsed ? VisibleRow : VisibleRow + 1; for (int column = 0; column < rowLenght; column++) { ContentControl dayControl = CalendarGrid.Children[row * rowLenght + column] as ContentControl; dayControl.Visibility = isRowCollapsed ? Visibility.Collapsed : Visibility.Visible; CalendarMonthViewDayModel model = dayControl.DataContext as CalendarMonthViewDayModel; model.DayOfMonth = calendarDay.Day; model.IsCurrentMonth = calendarDay.Month == Date.Month; model.IsToday = calendarDay == DateTime.Today; model.DateTime = calendarDay; if (calendarDay == DateTime.Today) { model.DayType = DayType.Today; } else if (calendarDay.Month != Date.Month) { model.DayType = DayType.NotCurrentMonth; } else if (HasAnniversaryEntry(entries, calendarDay.Day)) { model.DayType = DayType.Anniversary; } else if (DateCalculator.IsFestival(calendarDay)) { model.DayType = DayType.Festival; } else if (IsWeekend(calendarDay)) { model.DayType = DayType.Weekend; } else { model.DayType = DayType.Workday; } _DayControls.Add(calendarDay, dayControl); UpdateDayControlSubjects(calendarDay); calendarDay = calendarDay.AddDays(1); } } LayoutGridCanlendar(); if (MonthViewVisibleRowUpdated != null) { MonthViewVisibleRowUpdated(VisibleRow); } } }