# Drawer 自定义样式指南 Drawer 的视觉表现通过 `ControlTheme` + Design Token 系统控制。以下介绍几种常见的自定义方式。 --- ## 1. 使用属性直接控制 最简单的方式是通过控件的公共属性来控制外观: ```xml Some contents... ``` > 📖 完整示例参考:`controlgallery/AtomUIGallery/ShowCases/Views/Feedback/DrawerShowCase.axaml` --- ## 2. 通过 Style 覆盖样式 可以在 AXAML 中使用 `Style` 对 Drawer 进行全局或局部样式覆盖: ### 全局设置方向 ```xml ``` ### 按方向定制 ```xml ``` --- ## 3. 标题和额外操作区域 通过 `Title`、`Extra` 和 `Footer` 属性自定义标题栏和底部: ```xml Cancel Ok Edit Upload Delete ``` > 📖 参考:`controlgallery/AtomUIGallery/ShowCases/Views/Feedback/DrawerShowCase.axaml` 中 "Extra and Footer" 示例。 --- ## 4. 作用域渲染 默认情况下 Drawer 在整个窗口上渲染。使用 `OpenOn` 可以限制渲染范围: ```xml Render in this ``` > 📖 参考:`controlgallery/AtomUIGallery/ShowCases/Views/Feedback/DrawerShowCase.axaml` 中 "Render in current area" 示例。 --- ## 5. 控制动画行为 ```xml ``` --- ## 样式选择器速查 > 说明:Avalonia 样式选择器中使用 `atom|Drawer` 语法引用 `atom` XML 命名空间下的 `Drawer` 类型,其中 `|` 是命名空间分隔符。由于 Drawer 的内容在 `DrawerContainer` / `DrawerInfoContainer` 中渲染,部分样式需要针对这些内部类型。 ### 按控件类型选择 | 选择器 | 说明 | |---|---| | `atom\|Drawer` | 匹配所有 Drawer 实例 | | `atom\|DrawerContainer` | 匹配抽屉容器(在 AdornerLayer 中渲染) | | `atom\|DrawerInfoContainer` | 匹配抽屉信息容器(包含标题、内容、底部) | ### 按属性选择 | 选择器 | 说明 | |---|---| | `atom\|Drawer[Placement=Left]` | 匹配从左侧滑入的抽屉 | | `atom\|Drawer[Placement=Right]` | 匹配从右侧滑入的抽屉 | | `atom\|Drawer[Placement=Top]` | 匹配从顶部滑入的抽屉 | | `atom\|Drawer[Placement=Bottom]` | 匹配从底部滑入的抽屉 | | `atom\|Drawer[IsShowMask=False]` | 匹配无遮罩层的抽屉 | ### 按尺寸选择 | 选择器 | 说明 | |---|---| | `atom\|Drawer[SizeType=Small]` | 匹配小号抽屉(378px) | | `atom\|Drawer[SizeType=Middle]` | 匹配中号抽屉(520px) | | `atom\|Drawer[SizeType=Large]` | 匹配大号抽屉(736px) | | `atom\|Drawer[SizeType=Custom]` | 匹配自定义尺寸抽屉 | ### 模板内部元素选择 | 选择器 | 说明 | |---|---| | `atom\|DrawerContainer /template/ atom\|DrawerInfoContainer#PART_InfoContainer` | 抽屉信息容器 | | `atom\|DrawerInfoContainer /template/ atom\|IconButton#PART_CloseButton` | 关闭按钮 | ### 组合选择器示例 | 选择器 | 说明 | |---|---| | `atom\|Drawer[Placement=Right][SizeType=Large]` | 从右侧滑入的大号抽屉 | | `atom\|Drawer[IsShowMask=False][Placement=Left]` | 无遮罩从左侧滑入的抽屉 |