Calendar API 参考
命名空间
AXAML 命名空间前缀:atom(xmlns:atom="https://atomui.net")
枚举类型
CalendarMode
日历显示模式枚举,控制日历面板的视图层级。
| 值 |
说明 |
Month |
月视图,显示一个月的日期网格(默认) |
Year |
年视图,显示一年中的12个月份 |
Decade |
十年视图,显示一个十年中的年份 |
CalendarSelectionMode
日历选择模式枚举,控制日期选择行为。
| 值 |
说明 |
SingleDate |
仅可选择单个日期 |
SingleRange |
可选择一个连续日期范围(默认) |
MultipleRange |
可选择多个不连续的日期范围 |
None |
不允许选择任何日期 |
公共属性(StyledProperty)
| 属性名 |
类型 |
默认值 |
说明 |
FirstDayOfWeek |
DayOfWeek |
跟随系统区域设置 |
一周的起始日(如 Sunday 或 Monday) |
IsTodayHighlighted |
bool |
true |
是否高亮显示今天的日期 |
HeaderBackground |
IBrush? |
null |
头部导航区域的自定义背景色 |
DisplayMode |
CalendarMode |
CalendarMode.Month |
当前显示模式(Month / Year / Decade) |
SelectionMode |
CalendarSelectionMode |
CalendarSelectionMode.SingleRange |
选择模式 |
SelectedDate |
DateTime? |
null |
当前选中的日期(双向绑定,TwoWay) |
DisplayDate |
DateTime |
DateTime.Today |
当前显示的日期(双向绑定,TwoWay),决定显示哪个月/年 |
DisplayDateStart |
DateTime? |
null |
可显示的最早日期(双向绑定,TwoWay),null 表示无限制 |
DisplayDateEnd |
DateTime? |
null |
可显示的最晚日期(双向绑定,TwoWay),null 表示无限制 |
IsMotionEnabled |
bool |
跟随全局 Token EnableMotion |
是否启用过渡动画(共享属性,通过 AddOwner 注册) |
公共集合属性
| 属性名 |
类型 |
说明 |
SelectedDates |
SelectedDatesCollection |
所有已选日期的集合(只读属性,内容可修改)。支持 Add、AddRange、Clear、Remove 操作 |
BlackoutDates |
CalendarBlackoutDatesCollection |
被禁用(不可选)的日期集合。支持添加单个日期或日期范围,提供 AddDatesInPast() 便捷方法 |
继承自 TemplatedControl 的常用属性
| 属性名 |
类型 |
默认值 |
说明 |
Background |
IBrush? |
由 Token 控制 (ColorBgContainer) |
日历面板背景色 |
BorderBrush |
IBrush? |
由 Token 控制 (ColorBorder) |
边框颜色 |
BorderThickness |
Thickness |
由 Token 控制 (BorderThickness) |
边框粗细 |
CornerRadius |
CornerRadius |
由 Token 控制 (BorderRadius) |
圆角半径 |
Padding |
Thickness |
由 Token 控制 (PanelContentPadding) |
面板内间距 |
MinWidth |
double |
由 Token 控制 (ItemPanelMinWidth) |
最小宽度 |
MinHeight |
double |
由 Token 控制 (ItemPanelMinHeight) |
最小高度 |
IsEnabled |
bool |
true |
是否启用 |
HorizontalAlignment |
HorizontalAlignment |
Left |
水平对齐方式 |
VerticalAlignment |
VerticalAlignment |
Top |
垂直对齐方式 |
事件
| 事件名 |
类型 |
说明 |
SelectedDatesChanged |
EventHandler<SelectionChangedEventArgs> |
选中日期集合发生变化时触发。AddedItems 包含新增日期,RemovedItems 包含移除的日期 |
DisplayDateChanged |
EventHandler<CalendarDateChangedEventArgs> |
DisplayDate 属性变化时触发。RemovedDate 为旧日期,AddedDate 为新日期 |
DisplayModeChanged |
EventHandler<CalendarModeChangedEventArgs> |
DisplayMode 属性变化时触发。OldMode 为旧模式,NewMode 为新模式 |
事件参数类型
CalendarDateChangedEventArgs
CalendarModeChangedEventArgs
伪类(Pseudo-Classes)
Calendar 本身不定义自定义伪类,但其内部子控件定义了丰富的伪类用于样式驱动。
BaseCalendarDayButton 伪类(月视图中的日期按钮)
| 伪类 |
常量 |
触发条件 |
:today |
BaseCalendarDayButton.TodayPC |
该日期是今天,且 IsTodayHighlighted == true |
:selected |
StdPseudoClass.Selected |
该日期被选中 |
:inactive |
StdPseudoClass.InActive |
该日期不属于当前显示月份(上月或下月的溢出日期) |
:blackout |
BaseCalendarDayButton.BlackoutPC |
该日期在 BlackoutDates 集合中 |
:dayfocused |
BaseCalendarDayButton.DayfocusedPC |
该日期是当前键盘焦点所在日期 |
:pressed |
StdPseudoClass.Pressed |
按钮被按下 |
:disabled |
StdPseudoClass.Disabled |
按钮被禁用 |
:pointerover |
— |
鼠标悬浮 |
BaseCalendarButton 伪类(年/十年视图中的月份/年份按钮)
| 伪类 |
触发条件 |
:selected |
该月份/年份被选中 |
:inactive |
该年份不属于当前显示的十年范围 |
:btnfocused |
该按钮是当前键盘焦点所在按钮 |
:pointerover |
鼠标悬浮 |
CalendarItem 伪类
| 伪类 |
触发条件 |
:calendardisabled |
父 Calendar 控件 IsEnabled == false |
实现的接口
IMotionAwareControl
控制日历单元格的背景色过渡动画。当 IsMotionEnabled = false 时,日期按钮和月/年按钮在悬浮时不再有渐变过渡效果。
辅助类型
CalendarBlackoutDatesCollection
不可选日期集合,继承自 ObservableCollection<CalendarDateRange>。
| 方法 |
说明 |
Add(CalendarDateRange) |
添加一个日期范围为不可选 |
AddDatesInPast() |
将所有过去的日期标记为不可选 |
Contains(DateTime) |
检查指定日期是否在禁用集合中 |
ContainsAny(CalendarDateRange) |
检查指定范围是否与禁用日期有交集 |
SelectedDatesCollection
已选日期集合。
| 方法 |
说明 |
Add(DateTime) |
添加一个日期到选中集合 |
AddRange(DateTime start, DateTime end) |
添加一个日期范围到选中集合 |
Clear() |
清空所有选中日期 |
Remove(DateTime) |
从选中集合中移除指定日期 |
CalendarDateRange
表示一个日期范围。
| 属性 |
类型 |
说明 |
Start |
DateTime |
范围起始日期 |
End |
DateTime |
范围结束日期 |