# Grid 自定义样式指南
Grid 栅格系统(`Row` / `Col`)是纯布局控件,自身不渲染任何可见样式。因此自定义样式主要有两个层面:
1. **调整布局行为** — 通过 `Row` / `Col` 的属性控制间距、对齐、栅格分配
2. **调整子元素样式** — 通过 Avalonia `Style` 控制放置在 `Col` 内的子控件外观
---
## 1. 通过属性直接控制布局
`Row` 和 `Col` 的布局行为完全由属性控制,不需要覆盖 ControlTheme。
### Row 布局属性
```xml
```
### Col 布局属性
```xml
```
### 响应式布局属性
```xml
```
---
## 2. 通过 Style 设置批量属性
虽然 `Row` 和 `Col` 不使用 ControlTheme,但可以通过 Avalonia 的 `Style` 系统批量设置属性默认值。
### 为所有 Row 设置默认间距
```xml
```
### 为特定容器内的 Row 设置对齐方式
```xml
```
### 为 Col 设置默认属性
```xml
```
---
## 3. 为栅格子元素定义样式
Gallery 中使用的样式模式:在容器级别定义子元素样式类,然后在 `Col` 的子元素上应用。
> 📖 参考:`controlgallery/AtomUIGallery/ShowCases/Views/Layout/GridShowCase.axaml`
### 典型网格演示样式
```xml
col-6
col-6
```
---
## 4. 卡片网格布局
一个常见的实际应用场景——使用栅格创建卡片网格:
```xml
```
---
## 样式选择器速查
| 选择器 | 说明 |
|---|---|
| `atom\|Row` | 匹配所有 Row |
| `atom\|Col` | 匹配所有 Col |
| `atom\|Row > atom\|Col` | 匹配 Row 直接子元素 Col |
| `StackPanel.form-layout atom\|Row` | 匹配特定容器内的 Row |
| `atom\|Col > Border` | 匹配 Col 直接子元素 Border |
---
## 注意事项
1. **Grid 没有 ControlTheme** — `Row` 继承自 `Panel`,`Col` 继承自 `ContentControl`,它们不定义独立的 ControlTheme。无法通过 `ControlTheme` 覆盖来改变栅格布局行为。
2. **间距由 Gutter 实现** — 不要通过 `Style` 设置 `Col` 的 `Margin` 或 `Padding` 来模拟间距,这会与 Gutter 计算冲突。
3. **背景色在子元素上设置** — `Row` 和 `Col` 自身不应设置背景色(除非有特殊需求)。应该在放置在 `Col` 内的 `Border` 或其他容器上设置视觉样式。
4. **响应式配置优先级** — `Xs` / `Sm` / `Md` / `Lg` / `Xl` / `Xxl` 属性会覆盖 `Span` / `Offset` / `Order` / `Push` / `Pull` 的基础值。断点属性中未指定的字段回退到基础值。