IconButton API 参考
命名空间
- C#:
AtomUI.Desktop.Controls(控件类)/ AtomUI.Controls.Commons(基类)
- AXAML:
xmlns:atom="https://atomui.net"
枚举类型
IconAnimation(来自 AtomUI.Controls)
图标加载动画枚举。
| 值 |
说明 |
None |
无动画(默认) |
Spin |
旋转动画 |
公共属性(StyledProperty)
AbstractIconButton 基类层定义(设备无关)
| 属性名 |
类型 |
默认值 |
说明 |
Icon |
PathIcon? |
null |
要展示的图标,使用 Ant Design 图标集 |
IconBrush |
IBrush? |
null(由主题设置为 ColorIcon) |
图标画刷颜色,主题根据伪类自动切换;手动设置后将覆盖主题驱动的颜色变化 |
IconWidth |
double |
0(由主题设置为 SharedToken.IconSizeSM) |
图标渲染宽度 |
IconHeight |
double |
0(由主题设置为 SharedToken.IconSizeSM) |
图标渲染高度 |
LoadingAnimation |
IconAnimation |
IconAnimation.None |
图标加载动画类型(如 Spin 旋转) |
LoadingAnimationDuration |
TimeSpan |
默认值 |
加载动画一次循环的持续时间 |
IsMotionEnabled |
bool |
由 SharedToken.EnableMotion 控制 |
是否启用过渡动画(IMotionAwareControl) |
IsPassthroughMouseEvent |
bool |
false |
鼠标事件穿透开关。设为 true 时,PointerPressed / PointerReleased / PointerMoved 事件不会被标记为已处理,继续向父控件冒泡。用于嵌入其他控件内部时不阻断父控件交互 |
⚠️ IsPassthroughMouseEvent 的 StyledProperty 字段声明为 internal(仅在 AtomUI 程序集内可通过 AXAML 设置),但 CLR 属性访问器为 public(C# 代码中可从任何位置访问)。
主题控制的可覆盖属性
以下属性继承自 Avalonia 基类,由主题默认赋值,可通过 Style 或直接设置覆盖:
| 属性名 |
类型 |
主题默认值 |
说明 |
Background |
IBrush? |
Transparent |
背景色 |
CornerRadius |
CornerRadius |
SharedToken.BorderRadiusSM |
圆角半径 |
Cursor |
Cursor |
Hand |
鼠标光标 |
Padding |
Thickness |
未设置 |
内间距 |
Foreground |
IBrush? |
由主题控制 |
前景色(IconButton 通常不使用,图标颜色通过 IconBrush 控制) |
继承自 Avalonia Button 的常用属性
| 属性名 |
类型 |
默认值 |
说明 |
Command |
ICommand? |
null |
MVVM 命令绑定,点击时调用 ICommand.Execute;CanExecute 返回 false 时自动禁用 |
CommandParameter |
object? |
null |
命令参数 |
HotKey |
KeyGesture? |
null |
键盘快捷键 |
ClickMode |
ClickMode |
Release |
点击触发时机:Release(默认)或 Press |
Flyout |
FlyoutBase? |
null |
附加弹出层,点击时自动展开 |
IsPressed |
bool |
false(只读) |
是否处于按压状态 |
IsEnabled |
bool |
true |
是否启用 |
Content |
object? |
null |
按钮内容(继承自 ContentControl,但 IconButton 模板中不使用 ContentPresenter,设置此属性无可见效果) |
事件
| 事件名 |
类型 |
说明 |
Click |
EventHandler<RoutedEventArgs> |
按钮被点击时触发(继承自 Avalonia Button) |
伪类(Pseudo-Classes)
IconButton 不定义自定义伪类,仅使用继承自 Avalonia Button 的标准伪类:
| 伪类 |
触发条件 |
:pointerover |
鼠标悬浮在按钮上 |
:pressed |
按钮被按下 |
:disabled |
IsEnabled == false |
:focus |
按钮获得焦点 |
:focus-visible |
通过键盘(Tab)获得焦点 |
:flyout-open |
附加的 Flyout 处于打开状态 |
实现的接口
| 接口 |
定义位置 |
说明 |
IMotionAwareControl |
AtomUI.Controls |
支持 IsMotionEnabled 过渡动画开关 |
在其他控件中作为内部构件使用
IconButton 被 AtomUI 体系中的多个复合控件作为内部构件使用,以下是主要使用位置:
| 控件 |
模板部件名 |
用途 |
Tag |
PART_CloseButton |
标签的关闭按钮 |
Alert |
PART_CloseBtn |
警告提示的关闭按钮 |
NotificationCard |
关闭按钮 |
通知卡片的关闭按钮 |
TabItem / TabStripItem |
PART_ItemCloseButton |
选项卡的关闭按钮 |
TabControl |
添加/滚动按钮 |
选项卡栏的添加和滚动指示按钮 |
CalendarItem |
导航按钮 |
日历的前/后月份、年份导航按钮 |
Drawer |
PART_CloseButton |
抽屉的关闭按钮 |
OverlayDialog |
PART_CloseButton |
对话框的关闭按钮 |
Upload |
删除/预览按钮 |
上传列表项的删除和预览操作按钮 |
NumericUpDown |
步进按钮 |
数字输入框的增减按钮 |
TextBox |
PART_ClearButton |
输入框的清除按钮 |