feat: WIP.

This commit is contained in:
rabbitism
2024-06-18 00:36:55 +08:00
parent 1982f773ca
commit f75460a386
8 changed files with 165 additions and 92 deletions

View File

@@ -12,39 +12,43 @@ internal enum CalendarYearViewMode
{
Month,
Year,
// The button represents 10 years.
YearRange,
}
YearRange
}
[PseudoClasses(PC_Range, PseudoClassName.PC_Selected)]
public class CalendarYearButton: ContentControl
public class CalendarYearButton : ContentControl
{
public const string PC_Range = ":range";
public static readonly RoutedEvent<CalendarYearButtonEventArgs> ItemSelectedEvent =
RoutedEvent.Register<CalendarYearButton, CalendarYearButtonEventArgs>(
nameof(ItemSelected), RoutingStrategies.Bubble);
static CalendarYearButton()
{
PressedMixin.Attach<CalendarYearButton>();
}
internal int Year { get; private set; }
internal int Month { get; private set; }
internal int StartYear { get; private set; }
internal int EndYear { get; private set; }
internal CalendarYearViewMode Mode { get; private set; }
public static readonly RoutedEvent<CalendarYearButtonEventArgs> ItemSelectedEvent = RoutedEvent.Register<CalendarYearButton, CalendarYearButtonEventArgs>(
nameof(ItemSelected), RoutingStrategies.Bubble);
public event EventHandler<CalendarDayButtonEventArgs> ItemSelected
{
add => AddHandler(ItemSelectedEvent, value);
remove => RemoveHandler(ItemSelectedEvent, value);
}
internal void SetValues(CalendarYearViewMode mode, DateTime contextDate, int? month = null, int? year = null, int? startYear = null, int? endYear = null)
internal void SetValues(CalendarYearViewMode mode, DateTime contextDate, int? month = null, int? year = null,
int? startYear = null, int? endYear = null)
{
Debug.Assert(!(month is null && year is null && startYear is null && endYear is null));
Mode = mode;
@@ -66,6 +70,5 @@ public class CalendarYearButton: ContentControl
base.OnPointerPressed(e);
RaiseEvent(new CalendarYearButtonEventArgs(Mode, Year, Month, StartYear, EndYear)
{ RoutedEvent = ItemSelectedEvent, Source = this });
}
}