Calendar是只读日历视图,需用DisplayDate、BlackoutDates等配置;DatePicker/CalendarDatePicker是带输入框的复合控件,须绑定SelectedDate并设置DisplayFormat;Ursa DateTimePicker支持时分秒,需同时设DisplayFormat和PanelFormat。

Avalonia 中的 Calendar 和 DatePicker(包括 CalendarDatePicker)是两个常用但用途不同的日期控件:前者是纯日历视图,后者是带文本输入 + 下拉日历的复合控件。正确使用需注意模板、样式、绑定和常见陷阱。
Calendar 是一个只读日历面板,不自带输入框,适合嵌入仪表板或作为独立日历展示:
<calendar selectionmode="SingleDate"></calendar>,支持单选、多选、范围选等模式DisplayDate 属性指定初始显示日期BlackoutDates 集合,例如:<calendar.blackoutdates><calendardaterange start="2025-12-25" end="2026-01-01"></calendardaterange></calendar.blackoutdates>
SelectedDatesChanged 或绑定 SelectedDate
Avalonia 官方推荐的是 CalendarDatePicker(常简称为 DatePicker),它由文本框 + 下拉弹窗组成,但默认行为较“轻”,需手动补全关键配置才能稳定工作:
<calendardatepicker selecteddate="{Binding MyDate}"></calendardatepicker>,必须绑定 SelectedDate 才能双向生效DisplayFormat(仅影响文本框内显示),如:DisplayFormat="yyyy-MM-dd";若未设,可能显示为系统默认短格式(如 “12/15/2025”)DisplayMode="Year" 或在代码中预设如果需要年月日 + 时分秒一体化选择,官方 CalendarDatePicker 不支持时间部分,此时推荐 Ursa 主题的 DateTimePicker:
Semi.Avalonia 和 Ursa.Avalonia
App.axaml 中声明命名空间:xmlns:ursa="https://irihi.tech/ursa"
DisplayFormat(文本显示)、PanelFormat(弹窗内格式)、Watermark(占位提示)<datetimepicker displayformat="yyyy-MM-dd HH:mm:ss" panelformat="HH:mm:ss" watermark="请选择完整时间"></datetimepicker>
PanelFormat 可能导致时间选择器顺序错乱(如秒在前、时在后)遇到样式不符、关闭异常或输入失效等问题,多数源于底层实现细节:
TextBox 无法输入空格——需重写 Calendar_KeyDown 或改用其他触发方式MonthFormat 不刷新界面,必须同步触发 SelectedDate 更新(哪怕赋值自身)才能重绘
ControlTemplate,尤其注意 Popup 的 IsOpen 绑定和关闭逻辑,原生控件缺少外部点击关闭机制Width="Auto" 在 Avalonia 中非法,设为 Width="{Binding ActualWidth, ElementName=Parent}" 或直接给固定值更稳妥以上就是Avalonia怎么使用Calendar和DatePicker控件 Avalonia日期选择器的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号