Files

4.9 KiB
Raw Permalink Blame History

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 输入框的清除按钮