mirror of
https://github.com/AtomUI/AtomUI.git
synced 2026-10-19 23:30:44 +08:00
212 lines
8.0 KiB
Markdown
212 lines
8.0 KiB
Markdown
# ProgressBar API 参考
|
||
|
||
## 命名空间
|
||
|
||
```csharp
|
||
namespace AtomUI.Desktop.Controls; // ProgressBar, CircleProgress, DashboardProgress, StepsProgressBar
|
||
namespace AtomUI.Controls.Commons; // Abstract 基类
|
||
namespace AtomUI.Controls; // 枚举、伪类常量
|
||
```
|
||
|
||
AXAML 命名空间前缀:`atom`(`xmlns:atom="https://atomui.net"`)
|
||
|
||
---
|
||
|
||
## 枚举类型
|
||
|
||
### ProgressStatus(来自 `AtomUI.Controls`)
|
||
|
||
进度状态枚举。
|
||
|
||
| 值 | 说明 |
|
||
|---|---|
|
||
| `Normal` | 正常进行中(默认),使用 `ColorInfo` 主色 |
|
||
| `Success` | 成功完成,使用 `ColorSuccess` 成功色 |
|
||
| `Exception` | 异常/失败,使用 `ColorError` 错误色,显示异常图标 |
|
||
| `Active` | 活跃进行中(线形进度条专属),主色 + 动画效果 |
|
||
|
||
### DashboardGapPosition(来自 `AtomUI.Controls`)
|
||
|
||
仪表盘缺口位置枚举。
|
||
|
||
| 值 | 说明 |
|
||
|---|---|
|
||
| `Left` | 缺口在左侧 |
|
||
| `Top` | 缺口在顶部 |
|
||
| `Right` | 缺口在右侧 |
|
||
| `Bottom` | 缺口在底部(默认) |
|
||
|
||
### LinePercentAlignment(来自 `AtomUI.Controls`)
|
||
|
||
百分比标签对齐方式枚举。
|
||
|
||
| 值 | 说明 |
|
||
|---|---|
|
||
| `Start` | 起始位置(水平→左侧,垂直→顶部) |
|
||
| `Center` | 居中(水平→下方居中,垂直→右侧居中) |
|
||
| `End` | 末尾位置(水平→右侧,垂直→底部)。默认值 |
|
||
|
||
### PercentPosition(来自 `AtomUI.Controls`,record struct)
|
||
|
||
百分比标签位置结构体,控制标签是否在进度条内部及其对齐方式。
|
||
|
||
| 属性 | 类型 | 默认值 | 说明 |
|
||
|---|---|---|---|
|
||
| `IsInner` | `bool` | `false` | 是否将百分比标签放在进度条内部 |
|
||
| `Alignment` | `LinePercentAlignment` | `End` | 标签对齐方式 |
|
||
|
||
### SizeType(来自 `AtomUI.Controls`)
|
||
|
||
尺寸类型枚举。
|
||
|
||
| 值 | 说明 |
|
||
|---|---|
|
||
| `Small` | 小号(线宽 4px) |
|
||
| `Middle` | 中号(线宽 6px) |
|
||
| `Large` | 大号(线宽 8px,默认) |
|
||
|
||
---
|
||
|
||
## 所有进度条共享属性(AbstractProgressBar)
|
||
|
||
以下属性由所有四种进度条控件共享,定义在 `AbstractProgressBar` 基类中。
|
||
|
||
### 公共属性(StyledProperty / DirectProperty)
|
||
|
||
| 属性名 | 类型 | 默认值 | 说明 |
|
||
|---|---|---|---|
|
||
| `Value` | `double` | `0` | 当前进度值(继承自 `RangeBase`) |
|
||
| `Minimum` | `double` | `0` | 最小值(继承自 `RangeBase`) |
|
||
| `Maximum` | `double` | `100` | 最大值(继承自 `RangeBase`) |
|
||
| `Percentage` | `double` | — | 只读。自动计算的百分比 = (Value - Minimum) / (Maximum - Minimum) × 100 |
|
||
| `IsIndeterminate` | `bool` | `false` | 是否为不定态(显示持续动画而非具体进度) |
|
||
| `IsShowProgressInfo` | `bool` | `true` | 是否显示进度信息(百分比文字或状态图标) |
|
||
| `ProgressTextFormat` | `string` | `"{0:0}%"` | 进度文字格式化字符串,`{0}` 为百分比值 |
|
||
| `StrokeBrush` | `IBrush?` | 由主题 Token 控制 | 进度指示器描边颜色,支持纯色和渐变 |
|
||
| `TrailColor` | `Color?` | `null` | 轨道(未完成部分)颜色,设置后覆盖默认 `GrooveBrush` |
|
||
| `StrokeLineCap` | `PenLineCap` | `PenLineCap.Round` | 端点样式:`Round`(圆角)、`Flat`(平头)、`Square`(方头) |
|
||
| `SizeType` | `SizeType` | `SizeType.Large` | 尺寸类型,影响默认线宽 |
|
||
| `Status` | `ProgressStatus` | `ProgressStatus.Normal` | 进度状态,影响颜色和图标 |
|
||
| `IndicatorThickness` | `double` | `NaN`(自动) | 自定义进度条粗细,设置后覆盖尺寸自动计算 |
|
||
| `SuccessThreshold` | `double` | `NaN`(禁用) | 成功阈值,达到该值的部分使用 `SuccessStrokeBrush` |
|
||
| `SuccessStrokeBrush` | `IBrush?` | 由主题控制 | 成功阈值段的描边颜色 |
|
||
| `IsMotionEnabled` | `bool` | 跟随全局 Token `EnableMotion` | 是否启用过渡动画 |
|
||
| `ExceptionCompletedIcon` | `PathIcon?` | 自动设置 | 异常状态完成图标(线形:CloseCircleFilled,圆形:CloseOutlined) |
|
||
| `SuccessCompletedIcon` | `PathIcon?` | 自动设置 | 成功状态完成图标(线形:CheckCircleFilled,圆形:CheckOutlined) |
|
||
|
||
---
|
||
|
||
## ProgressBar 线形进度条
|
||
|
||
**继承**:`RangeBase` → `AbstractProgressBar` → `AbstractLineProgress` → `AbstractGeneralProgressBar` → `ProgressBar`
|
||
|
||
### 专有属性
|
||
|
||
| 属性名 | 类型 | 默认值 | 说明 |
|
||
|---|---|---|---|
|
||
| `Orientation` | `Orientation` | `Horizontal` | 方向:`Horizontal`(水平)或 `Vertical`(垂直) |
|
||
| `PercentPosition` | `PercentPosition` | `{ IsInner=false, Alignment=End }` | 百分比标签位置。支持 Inner(进度条内部)和 Outer(外部)模式 |
|
||
|
||
---
|
||
|
||
## CircleProgress 圆形进度条
|
||
|
||
**继承**:`RangeBase` → `AbstractProgressBar` → `AbstractCircleProgress` → `AbstractGeneralCircleProgress` → `CircleProgress`
|
||
|
||
### 专有属性
|
||
|
||
| 属性名 | 类型 | 默认值 | 说明 |
|
||
|---|---|---|---|
|
||
| `StepCount` | `int` | `0` | 步进段数量。>0 时将圆环分为等分段 |
|
||
| `StepGap` | `double` | `2` | 步进段之间的间隙(像素) |
|
||
|
||
### 尺寸行为
|
||
|
||
| SizeType | 默认直径 |
|
||
|---|---|
|
||
| `Large` | 120px |
|
||
| `Middle` | 90px |
|
||
| `Small` | 60px |
|
||
|
||
圆形进度条会根据可用空间自动调整大小。设置 `Width`/`Height` 可精确控制尺寸。
|
||
|
||
---
|
||
|
||
## DashboardProgress 仪表盘进度条
|
||
|
||
**继承**:`RangeBase` → `AbstractProgressBar` → `AbstractCircleProgress` → `AbstractGeneralDashboardProgress` → `DashboardProgress`
|
||
|
||
### 专有属性
|
||
|
||
| 属性名 | 类型 | 默认值 | 说明 |
|
||
|---|---|---|---|
|
||
| `DashboardGapPosition` | `DashboardGapPosition` | `Bottom` | 仪表盘缺口位置 |
|
||
| `GapDegree` | `double` | `75` | 仪表盘缺口角度(0–295) |
|
||
| `StepCount` | `int` | `0` | 步进段数量(继承自 `AbstractCircleProgress`) |
|
||
| `StepGap` | `double` | `2` | 步进段间隙(继承自 `AbstractCircleProgress`) |
|
||
|
||
---
|
||
|
||
## StepsProgressBar 步骤进度条
|
||
|
||
**继承**:`RangeBase` → `AbstractProgressBar` → `AbstractLineProgress` → `AbstractGeneralStepsProgressBar` → `StepsProgressBar`
|
||
|
||
### 专有属性
|
||
|
||
| 属性名 | 类型 | 默认值 | 说明 |
|
||
|---|---|---|---|
|
||
| `Orientation` | `Orientation` | `Horizontal` | 方向(继承自 `AbstractLineProgress`) |
|
||
| `Steps` | `int` | `1` | 步骤总数(最小 1) |
|
||
| `ChunkWidth` | `double` | `NaN`(自动) | 每个块的宽度。自动时根据 SizeType:Large=14, Middle=6, Small=2 |
|
||
| `ChunkHeight` | `double` | `NaN`(自动) | 每个块的高度 |
|
||
| `StepsStrokeBrush` | `List<IBrush>?` | `null` | 每个步骤的独立颜色列表。`null` 时使用统一 `StrokeBrush` |
|
||
| `PercentPosition` | `LinePercentAlignment` | `End` | 百分比标签位置 |
|
||
|
||
---
|
||
|
||
## 伪类(Pseudo-Classes)
|
||
|
||
所有进度条共享以下伪类:
|
||
|
||
| 伪类 | 常量 | 触发条件 |
|
||
|---|---|---|
|
||
| `:indeterminate` | `ProgressBarPseudoClass.Indeterminate` | `IsIndeterminate == true` |
|
||
| `:completed` | `ProgressBarPseudoClass.Completed` | `Value == Maximum` |
|
||
|
||
### 线形进度条(ProgressBar)额外伪类
|
||
|
||
| 伪类 | 常量 | 触发条件 |
|
||
|---|---|---|
|
||
| `:horizontal` | `ProgressBarPseudoClass.Horizontal` | `Orientation == Horizontal` |
|
||
| `:vertical` | `ProgressBarPseudoClass.Vertical` | `Orientation == Vertical` |
|
||
| `:labelinner` | `ProgressBarPseudoClass.PercentLabelInner` | `PercentPosition.IsInner == true` |
|
||
| `:labelinner-start` | `ProgressBarPseudoClass.PercentLabelInnerStart` | Inner 模式下 `Alignment == Start` |
|
||
| `:labelinner-center` | `ProgressBarPseudoClass.PercentLabelInnerCenter` | Inner 模式下 `Alignment == Center` |
|
||
| `:labelinner-end` | `ProgressBarPseudoClass.PercentLabelInnerEnd` | Inner 模式下 `Alignment == End` |
|
||
|
||
### StepsProgressBar 额外伪类
|
||
|
||
| 伪类 | 触发条件 |
|
||
|---|---|
|
||
| `:horizontal` / `:vertical` | 与 ProgressBar 相同 |
|
||
|
||
---
|
||
|
||
## 实现的接口
|
||
|
||
### ISizeTypeAware
|
||
|
||
```csharp
|
||
public SizeType SizeType { get; set; }
|
||
```
|
||
|
||
控制进度条的默认粗细。线形进度条:Large=8px, Middle=6px, Small=4px。圆形进度条根据直径自动按比例计算。
|
||
|
||
### IMotionAwareControl
|
||
|
||
```csharp
|
||
public bool IsMotionEnabled { get; set; }
|
||
```
|
||
|
||
控制 `Value`、`StrokeBrush`、`Foreground` 属性变化时的过渡动画。
|