public void SetDate(DateTime dt) { if ((Month.Month == dt.Month) && (Month.Year == dt.Year)) { // Тот же месяц SelectedDay = GetDayInCurrentMonth(dt); } else { Month = dt.Date; GenerateDays(Month); monthLb.Content = string.Format("{0:Y}", Month); SelectedDay = GetDayInCurrentMonth(dt); } }
public void GenerateDays(DateTime month) { var daysInMonth = DateTime.DaysInMonth(month.Year, month.Month); var start = new DateTime(month.Year, month.Month, 1); var end = new DateTime(month.Year, month.Month, daysInMonth); DaysPanel.Children.Clear(); var prevMonthDays = ExtesionHelper.DayOfWeekNum(start.DayOfWeek) - ExtesionHelper.DayOfWeekNum(DayOfWeek.Monday); for (var cur = ExtesionHelper.DayOfWeekNum(System.DayOfWeek.Monday); cur < ExtesionHelper.DayOfWeekNum(start.DayOfWeek); cur++) { var date = start.PreviousMonth(); date = new DateTime(date.Year, date.Month, DateTime.DaysInMonth(date.Year, date.Month) - prevMonthDays + cur); var cell = new TrainCalendarDay(this, date, Brushes.LightGray); DaysPanel.Children.Add(cell); } for (var d = start; d < end.AddDays(1); d = d.AddDays(1)) { var cell = new TrainCalendarDay(this, d, Brushes.BlanchedAlmond); DaysPanel.Children.Add(cell); } var lastDayInEnd = new DateTime(end.Year, end.Month, DateTime.DaysInMonth(end.Year, end.Month)); var cnt = 1; for (var cur = ExtesionHelper.DayOfWeekNum(lastDayInEnd.DayOfWeek); cur < ExtesionHelper.DayOfWeekNum(DayOfWeek.Sunday); cur++) { var date = start.NextMonth(); date = new DateTime(date.Year, date.Month, cnt); var cell = new TrainCalendarDay(this, date, Brushes.LightGray); DaysPanel.Children.Add(cell); cnt++; } if (DaysPanel.Children.Count == 35) { var lastDate = DaysPanel.Children[34] as TrainCalendarDay; for (int i = 0; i < 7; i++) { var cell = new TrainCalendarDay(this, lastDate.Date.AddDays(i), Brushes.LightGray); DaysPanel.Children.Add(cell); } } else if (DaysPanel.Children.Count == 28) { var lastDate = DaysPanel.Children[27] as TrainCalendarDay; for (int i = 0; i < 14; i++) { var cell = new TrainCalendarDay(this, lastDate.Date.AddDays(i), Brushes.LightGray); DaysPanel.Children.Add(cell); } } if (SelectedDay != null) { if ((SelectedDay.Date.Month == Month.Month) && (SelectedDay.Date.Year == Month.Year)) { GetDayInCurrentMonth(SelectedDay.Date).Background = (SolidColorBrush)Resources["ArtBlueBrush"]; } } }