CalendarView
可显示多个月份、范围、禁用日期与年份网格的日历,即 uikit:CalendarView。
<uikit:CalendarView Date="2025-03-14" />用法
uikit:CalendarView 绘制 Calendar 的卡片与自己的月份网格,并补上 Calendar 做不到的事:并排的多个月份、两端之间有日期的范围、禁用的星期,以及年份网格。每个月只显示它需要的四到六周。Date 是选中的日期,或范围的起始日,EndDate 是范围的最后一天;两者都双向绑定,DisplayDate 是所显示的第一个月份中的某一天。点击其他月份的某一天会切换到那个月。
表头中的月份与年份都是开关:月份打开按三列排列的十二个月,年份打开按五列排列的一页二十年,箭头在各页之间移动,选中后回到日期视图(DisplayMode 为 Day、Month 或 Year)。FirstDayOfWeek 让一周从另一天开始,small 与 large 是 Calendar 的尺寸。
设置 IsRange="True" 后,第一次点击开始一个范围,第二次点击结束它;点击起始日之前的日期,或在完整范围上点击,都会开始新的范围。两端为主色,中间的日期为强调色。点击完成取值时(选中一天,或范围的第二天)引发 Selected 事件。
NumberOfMonths 并排显示多个月份,每个月在其宽度份额中居中;此时表头不再使用开关,而是在每个月份上方标注月份名,其下为年份。卡片每个月 248px(small 为 220,large 为 304)。
禁用的日期以一半强度弱化,并忽略指针。DisabledDaysOfWeek 接收星期几("Sunday, Saturday"),DisabledDates 接收 uikit:DateRange 项(其 Start 或 End 可以留空),DisabledMatcher 接收代码中的 Func<DateTime, bool>。IsDateDisabled 判断某个日期是否被禁用。
单元格是 uikit:CalendarViewItem 按钮。它们的类型是样式类(previous、month-toggle、year-toggle、next、weekday、day、month、year),状态则是 :active、:in-range、:muted、:today 与 :disabled 伪类。
示例
一个范围。
<uikit:CalendarView IsRange="True" Date="2025-03-10" EndDate="2025-03-20" />并排的两个月,正在选择一个范围。
<uikit:CalendarView NumberOfMonths="2" IsRange="True" Date="2025-03-24" EndDate="2025-04-08" />禁用的周末,以及一段被禁用的日期范围。
<uikit:CalendarView Date="2025-03-14" DisabledDaysOfWeek="Sunday, Saturday">
<uikit:CalendarView.DisabledDates>
<uikit:DateRange Start="2025-03-24" End="2025-03-28" />
</uikit:CalendarView.DisabledDates>
</uikit:CalendarView>