14 KiB
Steps 使用文档
本文档介绍 AtomUI Steps 控件的各种使用方式,示例代码摘自 Gallery 演示程序。
📖 Gallery 源码位置:
controlgallery/AtomUIGallery/ShowCases/Views/Navigation/StepsShowCase.axaml
前置准备
在 AXAML 中使用 Steps,需要引入以下命名空间:
xmlns:atom="https://atomui.net"
xmlns:antdicons="https://atomui.net/icons/antdesign"
在 C# 代码中引入:
using AtomUI.Desktop.Controls; // Steps, StepsItem, 枚举类型
1. 基础用法
最简单的步骤条——展示三个步骤的流程:
<atom:Steps CurrentStep="0">
<atom:StepsItem Header="Finished" Description="This is a description." />
<atom:StepsItem Header="In Progress" Description="This is a description."
SubHeader="Left 00:00:08" />
<atom:StepsItem Header="Waiting" Description="This is a description." />
</atom:Steps>
CurrentStep="0" 表示第一个步骤为当前步骤。Steps 会自动为索引 0 之前的步骤设为 Finish,索引 0 设为 Process,之后设为 Wait。
📖 参考:Gallery ShowCase 中 "Basic" 示例。
2. 小尺寸版本
通过 SizeType="Small" 获得紧凑版本的步骤条:
<atom:Steps CurrentStep="0" SizeType="Small">
<atom:StepsItem Header="Finished" Description="This is a description." />
<atom:StepsItem Header="In Progress" Description="This is a description."
SubHeader="Left 00:00:08" />
<atom:StepsItem Header="Waiting" Description="This is a description." />
</atom:Steps>
📖 参考:Gallery ShowCase 中 "Mini version" 示例。
3. 自定义图标
通过 Icon 属性为每个步骤设置自定义图标,替换默认的数字指示器:
<atom:Steps CurrentStep="1">
<atom:StepsItem Header="Login" Status="Finish"
Icon="{antdicons:AntDesignIconProvider Kind=UserOutlined}" />
<atom:StepsItem Header="Verification" Status="Finish"
Icon="{antdicons:AntDesignIconProvider Kind=SolutionOutlined}" />
<atom:StepsItem Header="Pay" Status="Process"
Icon="{antdicons:AntDesignIconProvider Kind=LoadingOutlined, Animation=Spin}" />
<atom:StepsItem Header="Done" Status="Wait"
Icon="{antdicons:AntDesignIconProvider Kind=SmileOutlined}" />
</atom:Steps>
📖 参考:Gallery ShowCase 中 "With icon" 示例。
4. 步骤内容切换
为每个步骤关联内容,配合 CurrentContent 实现内容区域的动态切换:
<StackPanel Orientation="Vertical" Spacing="20">
<atom:Steps Name="ContentSteps" CurrentStep="{Binding CurrentStep}">
<atom:StepsItem Header="First" Content="First-content" />
<atom:StepsItem Header="Second" Content="Second-content" />
<atom:StepsItem Header="Third" Content="Last-content" />
</atom:Steps>
<atom:DashedBorder BorderThickness="1"
BorderBrush="{atom:SharedTokenResource ColorBorder}"
CornerRadius="{atom:SharedTokenResource BorderRadiusLG}"
Background="{atom:SharedTokenResource ColorFillAlter}"
Height="260">
<ContentPresenter Content="{Binding #ContentSteps.CurrentContent}"
ContentTemplate="{Binding #ContentSteps.CurrentContentTemplate}"
HorizontalAlignment="Center"
VerticalAlignment="Center" />
</atom:DashedBorder>
<StackPanel Orientation="Horizontal" Spacing="10">
<atom:Button ButtonType="Primary" Name="NextBtn">Next</atom:Button>
<atom:Button Name="PrevBtn">Previous</atom:Button>
</StackPanel>
</StackPanel>
private void HandleNextClick(object? sender, RoutedEventArgs e)
{
if (viewModel.CurrentStep < ContentSteps.ItemCount - 1)
viewModel.CurrentStep++;
}
private void HandlePreviousClick(object? sender, RoutedEventArgs e)
{
if (viewModel.CurrentStep > 0)
viewModel.CurrentStep--;
}
📖 参考:Gallery ShowCase 中 "Switch Step" 示例。
5. 垂直方向
<atom:Steps CurrentStep="1" Orientation="Vertical">
<atom:StepsItem Header="Finished" Description="This is a description." />
<atom:StepsItem Header="In Progress" Description="This is a description."
SubHeader="Left 00:00:08" />
<atom:StepsItem Header="Waiting" Description="This is a description." />
</atom:Steps>
垂直 + 小尺寸:
<atom:Steps CurrentStep="1" Orientation="Vertical" SizeType="Small">
<atom:StepsItem Header="Finished" Description="This is a description." />
<atom:StepsItem Header="In Progress" Description="This is a description." />
<atom:StepsItem Header="Waiting" Description="This is a description." />
</atom:Steps>
📖 参考:Gallery ShowCase 中 "Vertical" 和 "Vertical mini version" 示例。
6. 错误状态
通过 CurrentStepStatus="Error" 将当前步骤标记为错误状态:
<atom:Steps CurrentStep="1" CurrentStepStatus="Error">
<atom:StepsItem Header="Finished" Description="This is a description." />
<atom:StepsItem Header="In Progress" Description="This is a description."
SubHeader="Left 00:00:08" />
<atom:StepsItem Header="Waiting" Description="This is a description." />
</atom:Steps>
📖 参考:Gallery ShowCase 中 "Error status" 示例。
7. 点状样式
通过 ItemIndicatorType="Dot" 使用点状指示器代替数字圆圈:
水平点状
<atom:Steps CurrentStep="1" ItemIndicatorType="Dot">
<atom:StepsItem Header="Finished" Description="This is a description." />
<atom:StepsItem Header="In Progress" Description="This is a description." />
<atom:StepsItem Header="Waiting" Description="This is a description." />
</atom:Steps>
垂直点状
<atom:Steps CurrentStep="1" ItemIndicatorType="Dot" Orientation="Vertical">
<atom:StepsItem Header="Finished" Description="This is a description." />
<atom:StepsItem Header="In Progress" Description="This is a description." />
<atom:StepsItem Header="Waiting" Description="This is a description." />
</atom:Steps>
📖 参考:Gallery ShowCase 中 "Dot Style" 和 "Dot Style Vertical" 示例。
8. 可点击步骤
通过 IsItemClickable="True" 允许用户点击任意步骤进行跳转:
<atom:Steps CurrentStep="0" IsItemClickable="True">
<atom:StepsItem Header="Step 1" Description="This is a description." />
<atom:StepsItem Header="Step 2" Description="This is a description." />
<atom:StepsItem Header="Step 3" Description="This is a description." />
</atom:Steps>
可点击模式下支持所有风格和方向的组合:
<!-- 可点击 + 垂直 -->
<atom:Steps CurrentStep="0" IsItemClickable="True" Orientation="Vertical">
<!-- ... -->
</atom:Steps>
<!-- 可点击 + 点状 -->
<atom:Steps CurrentStep="0" IsItemClickable="True" ItemIndicatorType="Dot">
<!-- ... -->
</atom:Steps>
📖 参考:Gallery ShowCase 中 "Clickable" 示例。
9. 导航风格
导航式步骤条适用于顶部导航场景:
小尺寸导航 + 描述
<atom:Steps CurrentStep="0" Style="Navigation" IsItemClickable="True" SizeType="Small">
<atom:StepsItem Header="Step 1" Description="This is a description."
SubHeader="00:00:05" Status="Finish" />
<atom:StepsItem Header="Step 2" Description="This is a description."
SubHeader="00:01:02" Status="Process" />
<atom:StepsItem Header="Step 3" Description="This is a description."
SubHeader="waiting for longlong time" Status="Wait" />
</atom:Steps>
标准导航
<atom:Steps CurrentStep="0" Style="Navigation" IsItemClickable="True">
<atom:StepsItem Header="Step 1" Status="Finish" />
<atom:StepsItem Header="Step 2" Status="Process" />
<atom:StepsItem Header="Step 3" Status="Wait" />
<atom:StepsItem Header="Step 4" Status="Wait" />
</atom:Steps>
垂直导航
<atom:Steps CurrentStep="0" Style="Navigation" IsItemClickable="True" Orientation="Vertical">
<atom:StepsItem Header="Step 1" Description="This is a description."
SubHeader="00:00:05" Status="Finish" />
<atom:StepsItem Header="Step 2" Description="This is a description."
SubHeader="10:00:05" Status="Process" />
<atom:StepsItem Header="Step 3" Description="This is a description."
SubHeader="00:30:05" Status="Wait" />
</atom:Steps>
导航 + 点状
<atom:Steps CurrentStep="0" Style="Navigation" IsItemClickable="True" ItemIndicatorType="Dot">
<atom:StepsItem Header="Step 1" Description="This is a description." SubHeader="00:00:05" />
<atom:StepsItem Header="Step 2" Description="This is a description." SubHeader="00:01:02" />
<atom:StepsItem Header="Step 3" Description="This is a description." SubHeader="03:01:02" />
</atom:Steps>
📖 参考:Gallery ShowCase 中 "Navigation Steps" 示例(包含 10+ 种组合变体)。
10. 带进度环
在当前步骤显示进度环(仅在 Default 指示器类型和非 Inline 风格下生效):
<atom:Steps CurrentStep="1" ProgressValue="60" IsShowItemProgress="True">
<atom:StepsItem Header="Finished" Description="This is a description." />
<atom:StepsItem Header="In Progress" Description="This is a description." />
<atom:StepsItem Header="Waiting" Description="This is a description." />
</atom:Steps>
小尺寸进度环:
<atom:Steps CurrentStep="1" ProgressValue="30" IsShowItemProgress="True" SizeType="Small">
<atom:StepsItem Header="Finished" Description="This is a description." />
<atom:StepsItem Header="In Progress" Description="This is a description." />
<atom:StepsItem Header="Waiting" Description="This is a description." />
</atom:Steps>
📖 参考:Gallery ShowCase 中 "Steps with progress" 示例。
11. 标签垂直排列
通过 LabelPlacement="Vertical" 将标题和描述放在指示器下方:
<atom:Steps CurrentStep="1" LabelPlacement="Vertical">
<atom:StepsItem Header="Finished" Description="This is a description." />
<atom:StepsItem Header="In Progress" Description="This is a description." />
<atom:StepsItem Header="Waiting" Description="This is a description." />
</atom:Steps>
标签垂直 + 进度环:
<atom:Steps CurrentStep="1" LabelPlacement="Vertical" ProgressValue="45" IsShowItemProgress="True">
<atom:StepsItem Header="Finished" Description="This is a description." />
<atom:StepsItem Header="In Progress" Description="This is a description." />
<atom:StepsItem Header="Waiting" Description="This is a description." />
</atom:Steps>
📖 参考:Gallery ShowCase 中 "Label Placement" 示例。
12. 内联步骤条
内联风格适用于列表项中嵌入步骤状态:
<DockPanel LastChildFill="True">
<atom:Steps CurrentStep="1" DockPanel.Dock="Right" Style="Inline">
<atom:StepsItem Header="Step 1" Description="This is a description." />
<atom:StepsItem Header="Step 2" Description="This is a description." />
<atom:StepsItem Header="Step 3" Description="This is a description." />
</atom:Steps>
<StackPanel Orientation="Vertical" Spacing="10">
<TextBlock FontWeight="Bold">Ant Design Title</TextBlock>
<TextBlock Foreground="{atom:SharedTokenResource ColorTextTertiary}">
Ant Design, a design language for background applications
</TextBlock>
</StackPanel>
</DockPanel>
内联 + 错误状态:
<atom:Steps CurrentStep="1" Style="Inline" CurrentStepStatus="Error">
<atom:StepsItem Header="Step 1" Description="This is a description." />
<atom:StepsItem Header="Step 2" Description="This is a description." />
<atom:StepsItem Header="Step 3" Description="This is a description." />
</atom:Steps>
📖 参考:Gallery ShowCase 中 "Inline Steps" 示例。
常见组合模式
表单向导
<StackPanel Spacing="20">
<atom:Steps CurrentStep="{Binding WizardStep}">
<atom:StepsItem Header="Basic Info" />
<atom:StepsItem Header="Address" />
<atom:StepsItem Header="Payment" />
<atom:StepsItem Header="Confirm" />
</atom:Steps>
<!-- 表单内容区域 -->
<ContentControl Content="{Binding CurrentWizardPage}" />
<!-- 导航按钮 -->
<StackPanel Orientation="Horizontal" Spacing="10" HorizontalAlignment="Right">
<atom:Button Click="HandleBack" IsVisible="{Binding CanGoBack}">Back</atom:Button>
<atom:Button ButtonType="Primary" Click="HandleNext">
Next
</atom:Button>
</StackPanel>
</StackPanel>
订单进度追踪
<atom:Steps CurrentStep="2" Orientation="Vertical" SizeType="Small">
<atom:StepsItem Header="Order Placed" Description="2024-01-15 10:30"
Icon="{antdicons:AntDesignIconProvider Kind=ShoppingCartOutlined}" />
<atom:StepsItem Header="Payment Confirmed" Description="2024-01-15 10:35"
Icon="{antdicons:AntDesignIconProvider Kind=CreditCardOutlined}" />
<atom:StepsItem Header="Shipping" Description="Estimated: 2024-01-18"
Icon="{antdicons:AntDesignIconProvider Kind=CarOutlined}" />
<atom:StepsItem Header="Delivered" Description="Pending"
Icon="{antdicons:AntDesignIconProvider Kind=CheckCircleOutlined}" />
</atom:Steps>
列表中嵌入进度
<ItemsControl ItemsSource="{Binding Tasks}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<DockPanel LastChildFill="True" Margin="0,4">
<atom:Steps CurrentStep="{Binding ProgressStep}"
DockPanel.Dock="Right" Style="Inline">
<atom:StepsItem Header="Draft" />
<atom:StepsItem Header="Review" />
<atom:StepsItem Header="Published" />
</atom:Steps>
<TextBlock Text="{Binding Title}" FontWeight="Bold" />
</DockPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>