diff --git a/src/Ursa/Controls/DateTimePicker/CalendarContext.cs b/src/Ursa/Controls/DateTimePicker/CalendarContext.cs index e604423..a0d8943 100644 --- a/src/Ursa/Controls/DateTimePicker/CalendarContext.cs +++ b/src/Ursa/Controls/DateTimePicker/CalendarContext.cs @@ -36,6 +36,11 @@ public sealed class CalendarContext(int? year = null, int? month = null, int? st { month++; } + + if (month is null) + { + month = 1; + } return new CalendarContext(year, month, StartYear, EndYear); } @@ -52,6 +57,10 @@ public sealed class CalendarContext(int? year = null, int? month = null, int? st { month--; } + if (month is null) + { + month = 1; + } return new CalendarContext(year, month, StartYear, EndYear); } diff --git a/src/Ursa/Controls/DateTimePicker/CalendarView.cs b/src/Ursa/Controls/DateTimePicker/CalendarView.cs index e92d418..14e4abc 100644 --- a/src/Ursa/Controls/DateTimePicker/CalendarView.cs +++ b/src/Ursa/Controls/DateTimePicker/CalendarView.cs @@ -244,7 +244,9 @@ public class CalendarView : TemplatedControl { Mode = CalendarViewMode.Decade; var range = DateTimeHelper.GetDecadeViewRangeByYear(ContextDate.Year!.Value); + _dateContextSyncing = true; ContextDate = ContextDate.With(startYear: range.start, endYear: range.end); + _dateContextSyncing = false; UpdateYearButtons(); return; } @@ -253,7 +255,9 @@ public class CalendarView : TemplatedControl { Mode = CalendarViewMode.Century; var range = DateTimeHelper.GetCenturyViewRangeByYear(ContextDate.StartYear!.Value); + _dateContextSyncing = true; ContextDate = ContextDate.With(startYear: range.start, endYear: range.end); + _dateContextSyncing = false; UpdateYearButtons(); return; } @@ -442,7 +446,9 @@ public class CalendarView : TemplatedControl if (_yearGrid is null) return; SetCurrentValue(ModeProperty, CalendarViewMode.Decade); var range = DateTimeHelper.GetDecadeViewRangeByYear(ContextDate.Year!.Value); + _dateContextSyncing = true; ContextDate = ContextDate.With(startYear: range.start, endYear: range.end); + _dateContextSyncing = false; UpdateYearButtons(); } diff --git a/src/Ursa/Controls/DateTimePicker/DateRangePicker.cs b/src/Ursa/Controls/DateTimePicker/DateRangePicker.cs index b11bd0f..90b5e31 100644 --- a/src/Ursa/Controls/DateTimePicker/DateRangePicker.cs +++ b/src/Ursa/Controls/DateTimePicker/DateRangePicker.cs @@ -341,14 +341,14 @@ public class DateRangePicker : DatePickerBase private void OnTextBoxGetFocus(object sender, GotFocusEventArgs e) { - if (_startCalendar is not null) + if (_startCalendar is not null && _startCalendar?.Mode == CalendarViewMode.Month) { var date = SelectedStartDate ?? DateTime.Today; _startCalendar.ContextDate = new CalendarContext(date.Year, date.Month); _startCalendar.UpdateDayButtons(); } - if (_endCalendar is not null) + if (_endCalendar is not null && _endCalendar?.Mode == CalendarViewMode.Month) { var date2 = SelectedStartDate ?? DateTime.Today; date2 = date2.AddMonths(1);