feat: disable year out of range.

This commit is contained in:
rabbitism
2024-06-20 11:18:25 +08:00
parent b5133a58f8
commit ddb6900943
5 changed files with 42 additions and 15 deletions

View File

@@ -529,5 +529,10 @@ public class CalendarView : TemplatedControl
_monthButton?.SetValue(ContentControl.ContentProperty,
DateTimeHelper.GetCurrentDateTimeFormatInfo().AbbreviatedMonthNames[ContextCalendar.Month-1 ?? 0]);
}
bool canForward = !(ContextCalendar.EndYear <= 0) && !(ContextCalendar.Year <= 0);
bool canNext = !(ContextCalendar.StartYear > 9999) && !(ContextCalendar.EndYear > 9999);
IsEnabledProperty.SetValue(canForward, _previousButton, _fastPreviousButton);
IsEnabledProperty.SetValue(canNext, _nextButton, _fastNextButton);
}
}

View File

@@ -39,15 +39,27 @@ public class CalendarYearButton : ContentControl
CalendarContext.Year = context.Year;
CalendarContext.StartYear = context.StartYear;
CalendarContext.EndYear = context.EndYear;
this.Mode = mode;
Content = Mode switch
Mode = mode;
switch (Mode)
{
CalendarViewMode.Year => DateTimeHelper.GetCurrentDateTimeFormatInfo().AbbreviatedMonthNames[ CalendarContext.Month ?? 0 ],
CalendarViewMode.Decade => CalendarContext.Year?.ToString(),
CalendarViewMode.Century => CalendarContext.StartYear + "-" + CalendarContext.EndYear,
// CalendarViewMode.Century => CalendarContext.StartYear + "-" + CalendarContext.EndYear,
_ => Content
};
case CalendarViewMode.Year:
Content = DateTimeHelper.GetCurrentDateTimeFormatInfo()
.AbbreviatedMonthNames[CalendarContext.Month ?? 0];
break;
case CalendarViewMode.Decade:
Content = CalendarContext.Year <= 0 || CalendarContext.Year > 9999
? null
: CalendarContext.Year?.ToString();
break;
case CalendarViewMode.Century:
Content = CalendarContext.EndYear <= 0 || CalendarContext.StartYear > 9999
? null
: CalendarContext.StartYear + "-" + CalendarContext.EndYear;
break;
default:
Content = null;
break;
}
IsEnabled = Content != null;
}