feat: fix context null after syncing.

This commit is contained in:
rabbitism
2024-06-25 23:45:32 +08:00
parent 35fbf47b72
commit a459205d78
3 changed files with 17 additions and 2 deletions

View File

@@ -36,6 +36,11 @@ public sealed class CalendarContext(int? year = null, int? month = null, int? st
{ {
month++; month++;
} }
if (month is null)
{
month = 1;
}
return new CalendarContext(year, month, StartYear, EndYear); return new CalendarContext(year, month, StartYear, EndYear);
} }
@@ -52,6 +57,10 @@ public sealed class CalendarContext(int? year = null, int? month = null, int? st
{ {
month--; month--;
} }
if (month is null)
{
month = 1;
}
return new CalendarContext(year, month, StartYear, EndYear); return new CalendarContext(year, month, StartYear, EndYear);
} }

View File

@@ -244,7 +244,9 @@ public class CalendarView : TemplatedControl
{ {
Mode = CalendarViewMode.Decade; Mode = CalendarViewMode.Decade;
var range = DateTimeHelper.GetDecadeViewRangeByYear(ContextDate.Year!.Value); var range = DateTimeHelper.GetDecadeViewRangeByYear(ContextDate.Year!.Value);
_dateContextSyncing = true;
ContextDate = ContextDate.With(startYear: range.start, endYear: range.end); ContextDate = ContextDate.With(startYear: range.start, endYear: range.end);
_dateContextSyncing = false;
UpdateYearButtons(); UpdateYearButtons();
return; return;
} }
@@ -253,7 +255,9 @@ public class CalendarView : TemplatedControl
{ {
Mode = CalendarViewMode.Century; Mode = CalendarViewMode.Century;
var range = DateTimeHelper.GetCenturyViewRangeByYear(ContextDate.StartYear!.Value); var range = DateTimeHelper.GetCenturyViewRangeByYear(ContextDate.StartYear!.Value);
_dateContextSyncing = true;
ContextDate = ContextDate.With(startYear: range.start, endYear: range.end); ContextDate = ContextDate.With(startYear: range.start, endYear: range.end);
_dateContextSyncing = false;
UpdateYearButtons(); UpdateYearButtons();
return; return;
} }
@@ -442,7 +446,9 @@ public class CalendarView : TemplatedControl
if (_yearGrid is null) return; if (_yearGrid is null) return;
SetCurrentValue(ModeProperty, CalendarViewMode.Decade); SetCurrentValue(ModeProperty, CalendarViewMode.Decade);
var range = DateTimeHelper.GetDecadeViewRangeByYear(ContextDate.Year!.Value); var range = DateTimeHelper.GetDecadeViewRangeByYear(ContextDate.Year!.Value);
_dateContextSyncing = true;
ContextDate = ContextDate.With(startYear: range.start, endYear: range.end); ContextDate = ContextDate.With(startYear: range.start, endYear: range.end);
_dateContextSyncing = false;
UpdateYearButtons(); UpdateYearButtons();
} }

View File

@@ -341,14 +341,14 @@ public class DateRangePicker : DatePickerBase
private void OnTextBoxGetFocus(object sender, GotFocusEventArgs e) 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; var date = SelectedStartDate ?? DateTime.Today;
_startCalendar.ContextDate = new CalendarContext(date.Year, date.Month); _startCalendar.ContextDate = new CalendarContext(date.Year, date.Month);
_startCalendar.UpdateDayButtons(); _startCalendar.UpdateDayButtons();
} }
if (_endCalendar is not null) if (_endCalendar is not null && _endCalendar?.Mode == CalendarViewMode.Month)
{ {
var date2 = SelectedStartDate ?? DateTime.Today; var date2 = SelectedStartDate ?? DateTime.Today;
date2 = date2.AddMonths(1); date2 = date2.AddMonths(1);