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++;
}
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);
}

View File

@@ -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();
}

View File

@@ -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);