mirror of
https://github.com/AtomUI/AtomUI.git
synced 2026-10-19 23:30:44 +08:00
4.5 KiB
4.5 KiB
Rate API 参考
命名空间
// 桌面端控件
namespace AtomUI.Desktop.Controls;
// 跨平台基类(AbstractRate)
namespace AtomUI.Controls.Commons;
// 数据类型(RateValueChangedEventArgs)
namespace AtomUI.Controls;
AXAML 命名空间前缀:atom(xmlns:atom="https://atomui.net")
Rate 公共属性(StyledProperty)
以下属性定义在 AbstractRate 基类中,Rate 直接继承:
| 属性名 | 类型 | 默认值 | 来源 | 说明 |
|---|---|---|---|---|
IsAllowClear |
bool |
true |
AbstractRate |
是否允许再次点击后清除评分 |
IsAllowHalf |
bool |
false |
AbstractRate |
是否允许半星评分(0.5 步长) |
Character |
object? |
StarFilled 图标 |
AbstractRate |
自定义评分字符,支持 Icon、char、string 三种类型 |
StarColor |
IBrush? |
由 Token 控制(RateToken.StarColor) |
AbstractRate |
星星选中颜色 |
StarBgColor |
IBrush? |
由 Token 控制(RateToken.StarBg) |
AbstractRate |
星星未选中背景色 |
Count |
int |
5 |
AbstractRate |
星星总数 |
Value |
double |
NaN(初始化后取 DefaultValue) |
AbstractRate |
当前评分值 |
DefaultValue |
double |
0 |
AbstractRate |
默认评分值(Value 未设置时的初始值) |
IsKeyboardEnabled |
bool |
true |
AbstractRate |
是否启用键盘操作(方向键调整评分) |
ToolTips |
IList<string>? |
null |
AbstractRate |
每颗星的提示文案列表,长度应等于 Count |
SizeType |
SizeType |
SizeType.Middle |
AbstractRate(共享属性) |
尺寸类型(Large / Middle / Small) |
IsMotionEnabled |
bool |
跟随全局 Token EnableMotion |
AbstractRate(共享属性) |
是否启用过渡动画(悬浮缩放) |
继承自 Avalonia.Controls.Primitives.TemplatedControl 的常用属性
| 属性名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
IsEnabled |
bool |
true |
是否启用,false 为只读模式 |
Focusable |
bool |
true |
是否可获得焦点(由主题设置) |
FontSize |
double |
由主题控制 | 影响文字字符的大小 |
ClipToBounds |
bool |
false |
裁剪超出边界内容(设为 false 以支持悬浮缩放溢出) |
Rate 事件
| 事件名 | 类型 | 说明 |
|---|---|---|
ValueChanged |
EventHandler<RateValueChangedEventArgs> |
评分值变化事件(点击确认或键盘调整后触发) |
HoverValueChanged |
EventHandler<RateValueChangedEventArgs> |
悬浮值变化事件(鼠标在星星上移动时触发) |
RateValueChangedEventArgs
选中变化事件参数,继承自 EventArgs。
| 属性 | 类型 | 说明 |
|---|---|---|
OldValue |
double |
变化前的值 |
NewValue |
double |
变化后的值 |
键盘操作
当 IsKeyboardEnabled = true(默认)且 Rate 获得焦点时,支持以下键盘操作:
| 按键 | 整星模式 | 半星模式 |
|---|---|---|
← 左方向键 |
减 1 | 减 0.5 |
→ 右方向键 |
加 1 | 加 0.5 |
评分值会被自动限制在 [0, Count] 范围内。
Character 属性支持的类型
| 类型 | 示例 | 渲染方式 |
|---|---|---|
Icon(PathIcon 子类) |
StarFilled、HeartOutlined |
通过 FillBrush / StrokeBrush 着色 |
char |
'A'、'秦' |
通过内部 RateCharacter 控件自绘制 |
string |
"A"、"秦" |
取首字符,通过 RateCharacter 渲染 |
null |
— | 自动使用默认 StarFilled 图标 |
Value 属性行为说明
Value的初始值为double.NaN,控件初始化时自动设置为DefaultValueValue的有效范围为[0, Count]- 当
IsAllowHalf = true时,Value可以是 0.5 的倍数(如 0.5、1、1.5、2...) - 当
IsAllowHalf = false时,Value始终为整数 - 将
Value设为 0 表示清除评分
实现的接口
| 接口 | 定义位置 | 作用 |
|---|---|---|
IMotionAwareControl |
AtomUI.Controls.Shared |
过渡动画开关,控制悬浮缩放过渡效果 |
ISizeTypeAware |
AtomUI.Controls.Shared |
三种尺寸切换(Small / Middle / Large),映射到不同的星星大小 |
IFormItemAware |
AtomUI.Controls.Shared |
可参与表单验证 |
IFormItemAware 在 Rate 中的行为:
GetFormValue()→ 返回Value(double?类型)SetFormValue(value)→ 设置Value(接受double?)ClearFormValue()→ 将Value设为0.0ValueChanged→ 当Value变化时触发