Example #1
0
 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);
     }
 }
Example #2
0
        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"];
                }
            }
        }