feat: fix context null after syncing.
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user