用途
Syncfusion WinUI Segmented Control(SfSegmentedControl)用于在 WinUI 应用中创建分段控件或分段选择器 UI,实现在线性排列的两个及以上分段中进行互斥选择。它可作为单选按钮或完整 TabControl 的简洁替代方案,用于构建类选项卡导航、筛选栏或视图模式切换器,显示 2 个以上线性选项且只能选中其中一个。当用户在 WinUI 应用中提到分段控件、分段选择器、选项选择器、筛选栏、视图切换器、选项卡选择器、互斥按钮或基于分段的导航时,可应用该控件。
组件概览
SfSegmentedControl 是 Syncfusion WinUI 控件,提供一种在由两个或更多分段组成的线性集合中进行选择的简单方式,每个分段作为互斥选项。相比单选按钮或选项卡,它提供了内置滑动动画、自定义样式与主题支持。命名空间为 Syncfusion.UI.Xaml.Editors,NuGet 包为 Syncfusion.Editors.WinUI,平台为 WinUI 3 Desktop(.NET 5+、Windows App SDK 1.0+)。其关键优势是提供现代 iOS 风格的分段选择器,具有滑动动画、阴影效果与丰富的自定义能力,适合紧凑的选项选择而无需复杂 UI。
主要能力
- 数据填充:支持字符串集合(内联 x:String 项)与业务对象(ItemsSource、DisplayMemberPath),并可用 ItemTemplate 自定义 UI(图标、图片、文本)。
- 选择功能:提供 SelectedIndex(按索引编程选择,默认 0,0 基)、SelectedItem(当前选中项,支持双向绑定)以及 SelectionChanged 事件(提供 NewValue 与 OldValue)。
- 选中样式:可通过 SelectedSegmentStyle 自定义选中分段边框(目标为 SelectedSegmentBorder),支持阴影(HasShadow、ShadowColor)、选中动画(Slide 或 None,属性 SelectionAnimationType)与键盘导航(方向键、Tab、Enter)。
- 禁用项:提供 SetItemEnabled(int index, bool isEnabled) 方法,可按索引条件禁用分段,并具有对应的禁用视觉外观,防止用户与特定分段交互。
- UI 自定义:支持 BorderThickness、ItemBorderThickness、CornerRadius、BorderBrush,以及 ItemContainerStyle、ItemTemplateSelector、ItemContainerStyleSelector。
- 自定义模板:提供椭圆(胶囊)样式、圆形色板样式、图文堆叠布局、顶部指示器(选项卡栏)样式、渐变背景模板等。
- 主题支持:支持 App.xaml 中的 RequestedTheme(深色/浅色)、基于键的主题感知自定义、12 个主题资源键、SyncfusionSegmentedControl* 主题键,以及 ResourceDictionary.ThemeDictionaries 结构。
使用方式
基本用法为在 XAML 中引入命名空间 xmlns:syncfusion="using:Syncfusion.UI.Xaml.Editors",然后声明 SfSegmentedControl 并放置 x:String 项,例如 Day、Week、Month、Year,并通过 SelectedIndex 指定默认选中项。也可通过 ItemsSource 绑定业务对象集合(如 ObservableCollection),配合 DisplayMemberPath 指定显示属性。选择可通过 SelectionChanged 事件处理,或通过 SelectedIndex 双向绑定实现 MVVM。禁用项需在 ItemsSource 设置后调用 SetItemEnabled();若绑定到 ViewModel,应在 Loaded 事件中调用。
适用场景
- 视图切换器:列表/网格/时间线切换、日历视图模式(日/周/月/年)、地图视图类型、图表类型。建议使用字符串项或 DisplayMemberPath 配合 SelectionChanged。
- 筛选栏:状态、优先级、类别、时间段筛选。建议绑定 ObservableCollection,SelectedIndex 双向绑定。
- 设置切换:隐私级别、通知偏好、语言选择、主题选择。建议用 SelectionChanged 立即更新应用设置。
- 类选项卡导航:紧凑的区块导航、表单步骤指示器、个人资料选项卡。建议用自定义 ItemTemplate 放置图标,并禁用动画以实现即时切换。
- 仪表盘控件:日期范围选择器、数据源切换、报表类型选择器、比较模式切换。建议启用阴影效果并使用与仪表盘主题匹配的自定义颜色。
限制与实施提示
- 项数量:最适合 2–7 个分段;更多项可能需要滚动或改用其他控件。
- 选择处理:可使用 SelectionChanged 事件即时响应,或绑定 SelectedIndex 以适配 MVVM。
- 禁用项:SetItemEnabled() 需在 ItemsSource 设置后调用;绑定 ViewModel 时应在 Loaded 事件中调用。
- 自定义样式:设置 ItemContainerStyle 以获得统一间距,使用 SelectedSegmentStyle 控制选中外观。
- 动画:滑动动画(默认)提供平滑过渡;表单中可用 None 实现即时选择。
- 键盘支持:方向键导航,Enter 选择;应设置 TabIndex 以保证正确的焦点流。
- 主题支持:在 Resources 中使用主题键以保持浅色/深色主题外观一致。
- ItemTemplate:用于图标、图片或复杂布局;为性能考虑应保持模板简洁。
- 边框自定义:设置 ItemBorderThickness="0" 可获得无缝分段;用 BorderThickness 控制外边框。
- 圆角:使控件与项的 CornerRadius 匹配以获得一致的圆角外观。