# DropdownButton 自定义样式指南 DropdownButton 继承自 Button,其视觉表现通过 `ControlTheme` + Design Token 系统控制。以下介绍几种常见的自定义方式。 --- ## 1. 使用属性直接控制 最简单的方式是通过 DropdownButton 的公共属性来控制外观和行为: ```xml Options No Arrow Custom Icon ``` --- ## 2. 通过继承 Button 的样式能力 DropdownButton 继承自 Button,所有 Button 的样式技巧均可使用: ```xml Actions Danger Actions Ghost Dropdown ``` --- ## 3. 通过 Style 覆盖 ### 全局统一设置 ```xml ``` ### 调整悬浮延迟 ```xml ``` ### 按类型定制 ```xml ``` ### 使用伪类选择器 ```xml ``` --- ## 4. 通过 ControlTheme 完全替换主题 如果需要彻底替换 DropdownButton 的模板和样式,可以定义自定义 `ControlTheme`: ```xml Custom Dropdown ``` > ⚠️ 注意:完全替换 ControlTheme 将丢失内置的波纹效果、加载图标等功能。建议优先使用 Style 覆盖。 --- ## 5. 控制下拉指示器样式 可以通过模板选择器访问下拉指示器部件: ```xml ``` --- ## 6. 控制动画行为 ```xml No Animation No Wave ``` > 📖 Gallery 示例参考:`controlgallery/AtomUIGallery/ShowCases/Views/Navigation/DropdownButtonShowCase.axaml` --- ## 样式选择器速查 > 说明:Avalonia 样式选择器中使用 `atom|DropdownButton` 语法引用 `atom` XML 命名空间下的 `DropdownButton` 类型,其中 `|` 是命名空间分隔符。 ### 按类型选择 | 选择器 | 说明 | |---|---| | `atom\|DropdownButton` | 匹配所有 DropdownButton 实例 | | `atom\|DropdownButton[ButtonType=Primary]` | 匹配主按钮类型的下拉按钮 | | `atom\|DropdownButton[ButtonType=Default]` | 匹配默认按钮类型的下拉按钮 | | `atom\|DropdownButton[ButtonType=Text]` | 匹配文本按钮类型的下拉按钮 | | `atom\|DropdownButton[ButtonType=Link]` | 匹配链接按钮类型的下拉按钮 | ### 按尺寸选择 | 选择器 | 说明 | |---|---| | `atom\|DropdownButton[SizeType=Large]` | 匹配大号下拉按钮 | | `atom\|DropdownButton[SizeType=Middle]` | 匹配中号下拉按钮(默认) | | `atom\|DropdownButton[SizeType=Small]` | 匹配小号下拉按钮 | ### 按伪类选择 | 选择器 | 说明 | |---|---| | `atom\|DropdownButton:pointerover` | 鼠标悬浮 | | `atom\|DropdownButton:pressed` | 按下状态 | | `atom\|DropdownButton:disabled` | 禁用状态 | | `atom\|DropdownButton:flyout-open` | 下拉菜单打开时 | | `atom\|DropdownButton:loading` | 加载中状态 | | `atom\|DropdownButton:danger` | 危险样式 | ### 模板部件选择 | 选择器 | 说明 | |---|---| | `atom\|DropdownButton /template/ atom\|IconPresenter#PART_DropdownIndicator` | 下拉指示器图标 | | `atom\|DropdownButton /template/ Border#Frame` | 主框架边框 | | `atom\|DropdownButton /template/ ContentPresenter#PART_ContentPresenter` | 内容展示器 | ### 组合选择器示例 | 选择器 | 说明 | |---|---| | `atom\|DropdownButton[ButtonType=Primary]:not(:disabled)` | 非禁用的主按钮下拉 | | `atom\|DropdownButton:danger:pointerover` | 悬浮状态的危险下拉按钮 | | `atom\|DropdownButton[SizeType=Large]:flyout-open` | 菜单打开时的大号下拉按钮 |