# IconButton 使用文档 IconButton 是 AtomUI 中最轻量的按钮控件,仅展示一个图标。它既可以独立使用(工具栏、操作栏),也被广泛用作其他复合控件的内部构件。 > 📖 IconButton 没有专属的 Gallery ShowCase,但它被大量使用在其他控件的主题模板中: > - Tag 的关闭按钮(`src/AtomUI.Desktop.Controls/Tag/Themes/TagTheme.axaml`) > - TabItem 的关闭按钮(`src/AtomUI.Desktop.Controls/TabControl/Themes/BaseTabItemTheme.axaml`) > - NotificationCard 的关闭按钮(`src/AtomUI.Desktop.Controls/Notifications/Themes/NotificationCardTheme.axaml`) > - Upload 的删除/预览按钮(`src/AtomUI.Desktop.Controls/Upload/Themes/`) --- ## 前置准备 在 AXAML 中使用 IconButton,需要引入以下命名空间: ```xml xmlns:atom="https://atomui.net" xmlns:antdicons="https://atomui.net/icons/antdesign" ``` 在 C# 代码中引入: ```csharp using AtomUI.Desktop.Controls; // IconButton 控件 ``` --- ## 1. 基本使用 IconButton 最常见的用法是展示一个 Ant Design 图标: ```xml ``` --- ## 2. 自定义图标尺寸 通过 `IconWidth` 和 `IconHeight` 控制图标大小(默认为 `SharedToken.IconSizeSM`): ```xml ``` --- ## 3. 自定义图标颜色 通过 `IconBrush` 覆盖默认的主题颜色: ```xml ``` > ⚠️ 注意:直接设置 `IconBrush` 会覆盖主题的伪类驱动颜色(悬浮/按下颜色切换将失效)。如果需要保留交互色变化,请通过 Style 覆盖各状态的 `IconBrush`。 --- ## 4. 禁用状态 ```xml ``` 禁用时图标颜色自动切换为 `ColorTextDisabled`。 --- ## 5. MVVM 命令绑定 IconButton 继承自 Avalonia Button,完整支持 `Command` / `CommandParameter` 绑定: ```xml ``` 当 `CanExecute` 返回 `false` 时,IconButton 自动禁用(灰色图标 + 不可点击)。 --- ## 6. Click 事件 ```xml ``` ```csharp public void HandleCopyClick(object? sender, RoutedEventArgs args) { // 复制操作 var clipboard = TopLevel.GetTopLevel(this)?.Clipboard; if (clipboard is not null) { _ = clipboard.SetTextAsync("Copied text"); } } ``` --- ## 7. 带 Flyout 弹出 ```xml ``` --- ## 8. 加载动画 通过 `LoadingAnimation` 属性为图标添加旋转等加载动画: ```xml ``` --- ## 9. C# 代码操作 ### 动态创建 ```csharp using AtomUI.Desktop.Controls; using AtomUI.Icons.AntDesign; using Avalonia.Media; var iconButton = new IconButton { Icon = AntDesignIconPackage.Current.GetPathIcon(AntDesignIconKind.SearchOutlined), IconWidth = 16, IconHeight = 16, IconBrush = new SolidColorBrush(Colors.DodgerBlue) }; iconButton.Click += (sender, e) => { // 处理点击 }; parentPanel.Children.Add(iconButton); ``` ### 动态修改属性 ```csharp // 切换图标 iconButton.Icon = AntDesignIconPackage.Current.GetPathIcon(AntDesignIconKind.CheckOutlined); // 修改颜色 iconButton.IconBrush = new SolidColorBrush(Colors.Green); // 开启加载动画 iconButton.LoadingAnimation = IconAnimation.Spin; ``` --- ## 常见组合模式 ### 工具栏 ```xml ``` ### 表格行操作 ```xml ``` ### 自定义悬浮背景 当需要 IconButton 有悬浮背景反馈时(如独立使用场景),可通过 Style 增加背景: ```xml ``` ### 控件内部构件使用 IconButton 在 AtomUI 其他控件的主题模板中被广泛使用。以 Tag 的关闭按钮为例: ```xml ``` 关键点:`IsPassthroughMouseEvent="True"` 确保关闭按钮不会阻断父控件(Tag)的鼠标事件冒泡。