private bool CalculateRepeatWeek(DateTime date) { int _repeatDayInt = int.Parse(_day); if (_repeatDayInt == 0) { // Xth Day if (_week < 4) { return(_week + 1 == date.Day); } else { return(CalendarHelpers.DaysInMonth(date.Month, date.Year) == date.Day); } } else if (_repeatDayInt == 1) { // Xth Weekday if (date.DayOfWeek != DayOfWeek.Sunday && date.DayOfWeek != DayOfWeek.Saturday) { return(date.Day == CalendarHelpers.Weekday(date.Month, date.Year, _week + 1)); } } else if (_repeatDayInt == 2) { // Xth Weekend Day if (date.DayOfWeek == DayOfWeek.Sunday || date.DayOfWeek == DayOfWeek.Saturday) { return(date.Day == CalendarHelpers.WeekendDay(date.Month, date.Year, _week + 1)); } } else { // Xth Day of Week int dayOfWeek = CalendarHelpers.DayOfWeekNumber(date); return((int)date.DayOfWeek == _repeatDayInt - 3 && (dayOfWeek == _week + 1 || (_week == 4 && dayOfWeek == CalendarHelpers.NumberOfWeeks(date)))); } return(false); }
private void InitializeLayout() { title.Text = CalendarHelpers.Month(_month) + " " + _year.ToString(); int beginningOfMonth = CalendarHelpers.DayOfWeek(_year, _month, 1); int daysInMonth = CalendarHelpers.DaysInMonth(_month, _year); int row = 2; int column = 0; int counter = 0; bool hasBegin = DisplayDateStart != null; bool hasEnd = DisplayDateEnd != null; // // Previous month // int prevMonth = _month > 1 ? _month - 1 : 12; int prevYear = _month > 1 ? _year : _year - 1; int daysLastMonth = CalendarHelpers.DaysInMonth(prevMonth, prevYear); for (int i = beginningOfMonth - 2; i >= 0; i--) { RadioButton text = new RadioButton(); text.Style = FindResource("DateButton") as Style; text.Opacity = 0.5; text.Content = (daysLastMonth - i).ToString(); DateTime dt = new DateTime(prevYear, prevMonth, daysLastMonth - i); if (!hasEnd || (DateTime)DisplayDateEnd >= dt) { if (!hasBegin || (DateTime)DisplayDateStart <= dt) { text.Tag = dt; text.Checked += text_Checked; text.MouseDoubleClick += text_MouseDoubleClick; } else { text.IsEnabled = false; } } else { text.IsEnabled = false; } Grid.SetRow(text, row); Grid.SetColumn(text, column); grid.Children.Add(text); if (column < 6) { column++; } else { column = 0; row++; } counter++; } // // This month // for (int i = 1; i <= daysInMonth; i++) { RadioButton text = new RadioButton(); text.Style = FindResource("DateButton") as Style; text.Content = i.ToString(); DateTime dt = new DateTime(_year, _month, i); InitRadioButton(hasBegin, hasEnd, dt, text, ref row, ref column); counter++; } // // Next month // int nextMonth = _month < 12 ? _month + 1 : 1; int nextYear = _month < 12 ? _year : _year + 1; for (int i = 1; i <= 42 - counter; i++) { RadioButton text = new RadioButton(); text.Style = FindResource("DateButton") as Style; text.Opacity = 0.5; text.Content = i.ToString(); DateTime dt = new DateTime(nextYear, nextMonth, i); InitRadioButton(hasBegin, hasEnd, dt, text, ref row, ref column); } }