6.8 KiB
Grid API 参考
命名空间
namespace AtomUI.Desktop.Controls; // Row, Col, ColInfo, ColInfoExtension, GridGutter, GridGutterInfo, GridColSpanInfo, GridColSize, RowJustify, RowAlign
namespace AtomUI.Controls; // MediaBreakPoint, IMediaBreakAwareControl
AXAML 命名空间前缀:atom(xmlns:atom="https://atomui.net")
枚举类型
RowJustify
主轴对齐方式枚举。支持 TypeConverter,AXAML 中可使用 CSS 风格字符串(如 "space-between")。
| 值 | CSS 等价 | 说明 |
|---|---|---|
Start |
flex-start |
左对齐(默认) |
Center |
center |
居中对齐 |
End |
flex-end |
右对齐 |
SpaceBetween |
space-between |
两端对齐,项之间等间距 |
SpaceAround |
space-around |
每项两侧等间距 |
SpaceEvenly |
space-evenly |
所有间距完全相等 |
RowAlign
交叉轴对齐方式枚举。支持 TypeConverter,AXAML 中可使用 "top" / "middle" / "bottom" / "stretch" 字符串。
| 值 | 说明 |
|---|---|
Top |
顶部对齐 |
Middle |
垂直居中 |
Bottom |
底部对齐 |
Stretch |
拉伸填满行高(默认) |
MediaBreakPoint(来自 AtomUI.Controls)
响应式断点枚举。
| 值 | 宽度阈值 |
|---|---|
ExtraSmall |
< 576px |
Small |
≥ 576px |
Medium |
≥ 768px |
Large |
≥ 992px |
ExtraLarge |
≥ 1200px |
ExtraExtraLarge |
≥ 1600px |
Row 公共属性(StyledProperty)
| 属性名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
Gutter |
GridGutter |
new GridGutter() (0,0) |
列间距(水平 + 垂直),支持 TypeConverter 字符串解析 |
Justify |
RowJustify |
Start |
主轴对齐方式 |
Align |
RowAlign |
Stretch |
交叉轴对齐方式 |
Wrap |
bool |
true |
是否允许列换行(Span 总和超过 24 时) |
Row继承自Panel,拥有Panel的所有属性(Background、Children、ClipToBounds等)。
Col 公共属性(StyledProperty)
| 属性名 | 类型 | 默认值 | 验证规则 | 说明 |
|---|---|---|---|---|
Span |
GridColSpanInfo |
0 |
0-24 | 列占据的栅格数,支持响应式字符串 |
Offset |
int |
0 |
0-24 | 列向右偏移的栅格数 |
Order |
int |
0 |
任意整数 | 列的排列顺序 |
Push |
int |
0 |
0-24 | 列向右视觉位移的栅格数 |
Pull |
int |
0 |
0-24 | 列向左视觉位移的栅格数 |
Xs |
GridColSize? |
null |
— | ExtraSmall 断点配置 |
Sm |
GridColSize? |
null |
— | Small 断点配置 |
Md |
GridColSize? |
null |
— | Medium 断点配置 |
Lg |
GridColSize? |
null |
— | Large 断点配置 |
Xl |
GridColSize? |
null |
— | ExtraLarge 断点配置 |
Xxl |
GridColSize? |
null |
— | ExtraExtraLarge 断点配置 |
Col继承自ContentControl,拥有Content、ContentTemplate、HorizontalContentAlignment、VerticalContentAlignment等属性。
数据类型
GridGutter
列间距配置,支持 TypeConverter 从字符串解析。
| 属性 | 类型 | 说明 |
|---|---|---|
Horizontal |
GridGutterInfo |
水平间距配置 |
Vertical |
GridGutterInfo |
垂直间距配置 |
AXAML 字符串格式:
| 格式 | 示例 | 说明 |
|---|---|---|
| 单数字 | "16" |
水平间距 16,垂直间距 0 |
| 两个数字 | "16,24" |
水平 16,垂直 24 |
| 响应式 | "xs:8,sm:16,md:24" |
按断点设置水平间距 |
| 水平+垂直响应式 | "xs:8,sm:16;xs:16,sm:24" |
用 ; 分隔水平和垂直 |
构造方法:
| 签名 | 说明 |
|---|---|
GridGutter() |
全零间距 |
GridGutter(GridGutterInfo horizontal, GridGutterInfo vertical) |
指定水平和垂直间距 |
静态方法:
| 方法 | 签名 | 说明 |
|---|---|---|
Parse |
static GridGutter Parse(string input) |
从字符串解析 |
GridGutterInfo
响应式间距值,每个断点一个 double 值。
| 属性 | 类型 | 说明 |
|---|---|---|
ExtraSmall |
double |
xs 断点间距值 |
Small |
double |
sm 断点间距值 |
Medium |
double |
md 断点间距值 |
Large |
double |
lg 断点间距值 |
ExtraLarge |
double |
xl 断点间距值 |
ExtraExtraLarge |
double |
xxl 断点间距值 |
构造方法:
| 签名 | 说明 |
|---|---|
GridGutterInfo() |
全零 |
GridGutterInfo(double value) |
所有断点使用同一值 |
GridGutterInfo(double xs, double sm, double md, double lg, double xl, double xxl) |
每个断点独立值 |
AXAML 字符串格式:"xs:8,sm:16,md:24,lg:32,xl:40,xxl:48" 或单数字 "16"
GridColSpanInfo
响应式 Span 值(readonly record struct),每个断点一个 int 值。支持隐式从 int 转换。
| 属性 | 类型 | 说明 |
|---|---|---|
ExtraSmall |
int |
xs 断点 Span 值 |
Small |
int |
sm 断点 Span 值 |
Medium |
int |
md 断点 Span 值 |
Large |
int |
lg 断点 Span 值 |
ExtraLarge |
int |
xl 断点 Span 值 |
ExtraExtraLarge |
int |
xxl 断点 Span 值 |
AXAML 字符串格式:"xs:24,sm:12,md:8,lg:6" 或单数字 "12"
隐式转换:GridColSpanInfo span = 12;
GridColSize / ColInfo
按断点存储列的完整布局配置。ColInfo 是 GridColSize 的别名(继承),带有 GridColSizeConverter 支持 AXAML 解析。
| 属性 | 类型 | 说明 |
|---|---|---|
Span |
int? |
栅格数(0-24),null 表示不覆盖 |
Offset |
int? |
偏移栅格数(0-24),null 表示不覆盖 |
Order |
int? |
排列顺序,null 表示不覆盖 |
Push |
int? |
向右视觉位移(0-24),null 表示不覆盖 |
Pull |
int? |
向左视觉位移(0-24),null 表示不覆盖 |
AXAML 字符串格式:
- 纯数字:
"12"→Span = 12 - 键值对:
"span:12,offset:4,order:2"→Span = 12, Offset = 4, Order = 2
ColInfoExtension(MarkupExtension)
AXAML MarkupExtension,用于在属性内联中构造 GridColSize 对象。
| 属性 | 类型 | 说明 |
|---|---|---|
Span |
int? |
栅格数(0-24) |
Offset |
int? |
偏移栅格数(0-24) |
Order |
int? |
排列顺序 |
Push |
int? |
向右视觉位移(0-24) |
Pull |
int? |
向左视觉位移(0-24) |
使用方式:
<atom:Col Sm="{atom:ColInfo Span=12, Order=2}" />
TypeConverter 汇总
| 类型 | TypeConverter | AXAML 示例 |
|---|---|---|
GridGutter |
GridGutterConverter |
Gutter="16,24" |
GridGutterInfo |
内部使用 Parse() |
— |
GridColSpanInfo |
GridColSpanInfoConverter |
Span="xs:24,sm:12,md:8" |
GridColSize / ColInfo |
GridColSizeConverter |
Xs="span:12,offset:4" 或 Xs="12" |
RowJustify |
RowJustifyConverter |
Justify="space-between" |
RowAlign |
RowAlignConverter |
Align="middle" |