关于 syncfusion-winui-ribbon
介绍如何在 WinUI 3 桌面应用中构建 Syncfusion SfRibbon 命令栏,涵盖选项卡组织、Backstage 视图、紧凑布局、键盘导航和自适应行为。
主要功能
- 01按选项卡和组组织命令
- 02普通、下拉、拆分及切换按钮
- 03Backstage 视图和快速访问工具栏
- 04带溢出菜单的简化布局
- 05图库、KeyTip 和 ScreenTip
- 06自适应尺寸及自定义控件
适用场景
- 01为文档编辑器添加功能区命令
- 02创建应用设置 Backstage 视图
- 03让功能区适应紧凑窗口布局
- 04为命令提供键盘导航
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ syncfusion/ winui-ui-components-skills --skill syncfusion-winui-ribbon安装后在 Claude Code 中输入/syncfusion-winui-ribbon确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/advanced-features.mdbackstage.mdgetting-started.mdquick-access-toolbar.mdribbon-items.mdsimplified-layout.mdtabs-and-groups.mdui-customization.md详细介绍
实现 Syncfusion WinUI 功能区
实现 Syncfusion WinUI 功能区(SfRibbon)控件的综合指南。该控件是一种命令栏,可将应用程序命令和工具整理到选项卡组中,为 WinUI 3 桌面应用程序提供 Microsoft Office 风格的界面。
何时使用此技能
当用户需要以下功能时,请使用此技能:
- 在 WinUI 3 应用程序中实现功能区控件
- 使用选项卡和组组织应用程序命令(类似 Microsoft Office)
- 添加功能区按钮、下拉按钮、拆分按钮或切换按钮
- 创建用于设置和选项的后台菜单
- 为常用命令实现快速访问工具栏(QAT)
- 启用简化/紧凑功能区布局,以节省空间
- 添加用于样式和模板的功能区图库控件
- 使用 KeyTip 配置键盘快捷键
- 使用 ScreenTip 实现增强型工具提示
- 处理功能区调整大小和响应行为
- 在功能区中托管自定义控件(ComboBox、CheckBox 等)
- 使用主题和模板自定义功能区外观
- 创建根据用户选择显示的上下文选项卡
组件概览
Syncfusion WinUI 功能区控件为现代 Windows 应用程序提供了全面的命令组织系统。它以层级结构组织命令:
层级结构: 功能区 → 选项卡 → 组 → 项(按钮、下拉按钮等)
主要功能:
- 选项卡与组组织: 按逻辑类别整理命令
- 多种按钮类型: 普通、下拉、拆分、切换按钮
- 后台视图: 用于应用程序设置的独立视图(类似 Office 中的“文件”菜单)
- 简化布局: 带溢出菜单的紧凑单行模式
- 功能区图库: 显示样式/模板集合
- 快速访问工具栏: 用户可自定义的常用命令工具栏
- 键盘导航: 支持 KeyTip 键盘快捷键
- 增强型工具提示: 支持丰富内容的 ScreenTip
- 响应式设计: 自动调整大小并确定项目优先级
- 自定义控件: 在功能区组中托管任何 WinUI 控件
包: Syncfusion.Ribbon.WinUI
命名空间: Syncfusion.UI.Xaml.Ribbon
主要控件: SfRibbon
文档与导航指南
🚀 入门
📄 阅读: references/getting-started.md
- 安装并设置 NuGet 包
- 导入命名空间并初始化
- 使用基本选项卡创建第一个功能区
- 将功能区添加到 WinUI 应用程序
- 配置许可证
- 最简可运行示例
📑 选项卡与组
📄 阅读: references/tabs-and-groups.md
- 创建和配置 RibbonTabs
- 使用 RibbonGroups 组织命令
- 选项卡选择和导航
- 上下文选项卡组(条件选项卡)
- 自定义选项卡外观
- SelectFirstTabOnVisible 行为
🔘 功能区项目
📄 阅读: references/ribbon-items.md
- RibbonButton(标准按钮)
- RibbonDropDownButton(下拉菜单)
- RibbonSplitButton(单击 + 下拉)
- RibbonToggleButton(开/关状态)
- 项目大小模式(Small、Normal、Large)
- 图标类型和配置
- 功能区中的 RibbonComboBox
- 使用 RibbonItemHost 托管自定义控件
- 组启动器按钮
🎭 后台视图
📄 阅读: references/backstage.md
- RibbonBackstage 概览
- 设置 BackstageView 控件
- 创建自定义后台视图布局
- 设置和选项面板
- 后台视图导航模式
- 处理退出后台视图
⚡ 快速访问工具栏
📄 阅读: references/quick-access-toolbar.md
- QAT 概览和用途
- 向 QAT 添加命令
- 自定义和定位
- 常见 QAT 模式(保存、撤消、重做)
📐 简化布局
📄 阅读: references/simplified-layout.md
- 简化布局概览(单行紧凑模式)
- LayoutModeOptions 和 ActiveLayoutMode
- 在 Normal 和 Simplified 之间切换
- 每个项目的 DisplayOptions(Normal、Simplified、OverflowMenu)
- 溢出菜单行为
- 紧凑 UI 设计模式
🎨 高级功能
📄 阅读: references/advanced-features.md
- 用于样式集合的 RibbonGallery
- 用于键盘导航的 KeyTip
- 用于增强工具提示的 ScreenTip
- 功能区调整大小和紧凑尺寸
- 响应式功能区设计
- 窗口大小调整处理
🖌️ UI 自定义
📄 阅读: references/ui-customization.md
- RightPane 配置
- 主题自定义
- 模板覆盖
- 自定义样式
- 无障碍注意事项
- 图标自定义
快速入门示例
带选项卡和按钮的基本功能区
<Page x:Class="MyApp.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:ribbon="using:Syncfusion.UI.Xaml.Ribbon">
<Grid x:Name="rootGrid">
<ribbon:SfRibbon x:Name="sfRibbon">
<ribbon:SfRibbon.Tabs>
<ribbon:RibbonTab Header="Home">
<ribbon:RibbonGroup Header="Clipboard">
<ribbon:RibbonSplitButton Content="Paste"
Icon="Paste"
AllowedSizeModes="Large">
<ribbon:RibbonSplitButton.Flyout>
<MenuFlyout>
<MenuFlyoutItem Text="Paste" />
<MenuFlyoutItem Text="Paste Special" />
</MenuFlyout>
</ribbon:RibbonSplitButton.Flyout>
</ribbon:RibbonSplitButton>
<ribbon:RibbonButton Content="Cut"
Icon="Cut"
AllowedSizeModes="Normal" />
<ribbon:RibbonButton Content="Copy"
Icon="Copy"
AllowedSizeModes="Normal" />
</ribbon:RibbonGroup>
<ribbon:RibbonGroup Header="Font">
<ribbon:RibbonToggleButton Content="Bold"
AllowedSizeModes="Normal">
<ribbon:RibbonToggleButton.Icon>
<SymbolIcon Symbol="Bold" />
</ribbon:RibbonToggleButton.Icon>
</ribbon:RibbonToggleButton>
<ribbon:RibbonToggleButton Content="Italic"
AllowedSizeModes="Normal">
<ribbon:RibbonToggleButton.Icon>
<SymbolIcon Symbol="Italic" />
</ribbon:RibbonToggleButton.Icon>
</ribbon:RibbonToggleButton>
</ribbon:RibbonGroup>
</ribbon:RibbonTab>
<ribbon:RibbonTab Header="Insert">
<ribbon:RibbonGroup Header="Illustrations">
<ribbon:RibbonButton Content="Pictures"
AllowedSizeModes="Large">
<ribbon:RibbonButton.Icon>
<SymbolIcon Symbol="Pictures" />
</ribbon:RibbonButton.Icon>
</ribbon:RibbonButton>
</ribbon:RibbonGroup>
</ribbon:RibbonTab>
<ribbon:RibbonTab Header="View" />
</ribbon:SfRibbon.Tabs>
</ribbon:SfRibbon>
</Grid>
</Page>
C# 代码隐藏:
using Syncfusion.UI.Xaml.Ribbon;
namespace MyApp
{
public sealed partial class MainPage : Page
{
public MainPage()
{
this.InitializeComponent();
// Optionally configure ribbon programmatically
sfRibbon.SelectedIndex = 0; // Select Home tab
}
}
}
常见模式
模式 1:带 Backstage 的功能区
<ribbon:SfRibbon x:Name="sfRibbon">
<ribbon:SfRibbon.Backstage>
<ribbon:RibbonBackstage>
<ribbon:BackstageView>
<ribbon:BackstageView.Items>
<ribbon:BackstageViewItemHeader Header="New" />
<ribbon:BackstageViewItemHeader Header="Open" />
<ribbon:BackstageViewItemHeader Header="Save" />
<ribbon:BackstageViewTabItem Header="Settings">
<StackPanel Margin="20">
<TextBlock Text="Application Settings"
FontSize="20"
FontWeight="SemiBold" />
</StackPanel>
</ribbon:BackstageViewTabItem>
</ribbon:BackstageView.Items>
</ribbon:BackstageView>
</ribbon:RibbonBackstage>
</ribbon:SfRibbon.Backstage>
</ribbon:SfRibbon>
模式 2:带溢出菜单的简化布局
<ribbon:SfRibbon x:Name="sfRibbon"
LayoutModeOptions="Normal,Simplified"
ActiveLayoutMode="Simplified">
<ribbon:SfRibbon.Tabs>
<ribbon:RibbonTab Header="Home">
<ribbon:RibbonGroup Header="Actions">
<ribbon:RibbonButton Content="Save"
Icon="Save"
DisplayOptions="Normal,Simplified" />
<ribbon:RibbonButton Content="Export"
Icon="Export"
DisplayOptions="Normal,OverflowMenu" />
</ribbon:RibbonGroup>
</ribbon:RibbonTab>
</ribbon:SfRibbon.Tabs>
</ribbon:SfRibbon>
模式 3:上下文选项卡
<ribbon:SfRibbon x:Name="sfRibbon">
<ribbon:SfRibbon.Tabs>
<ribbon:RibbonTab Header="Home">
</ribbon:RibbonTab>
</ribbon:SfRibbon.Tabs>
<ribbon:SfRibbon.ContextualTabGroups>
<ribbon:RibbonContextualTabGroup x:Name="ImageTools"
Visibility="Collapsed"
SelectFirstTabOnVisible="True"
Background="LightBlue">
<ribbon:RibbonContextualTabGroup.Tabs>
<ribbon:RibbonTab Header="Picture Format">
<ribbon:RibbonGroup Header="Adjust">
<ribbon:RibbonButton Content="Brightness" Icon="Brightness" />
<ribbon:RibbonButton Content="Contrast" Icon="Contrast" />
</ribbon:RibbonGroup>
</ribbon:RibbonTab>
</ribbon:RibbonContextualTabGroup.Tabs>
</ribbon:RibbonContextualTabGroup>
</ribbon:SfRibbon.ContextualTabGroups>
</ribbon:SfRibbon>
// Show contextual tabs when image is selected
private void OnImageSelected(object sender, RoutedEventArgs e)
{
ImageTools.Visibility = Visibility.Visible;
}
private void OnImageDeselected(object sender, RoutedEventArgs e)
{
ImageTools.Visibility = Visibility.Collapsed;
}
模式 4:托管自定义控件
<ribbon:RibbonGroup Header="Font">
<ribbon:RibbonItemHost Margin="0,12,0,0">
<ribbon:RibbonItemHost.ItemTemplate>
<ComboBox x:Name="FontComboBox"
Width="150"
PlaceholderText="Select Font">
<ComboBoxItem Content="Calibri" IsSelected="True" />
<ComboBoxItem Content="Arial" />
<ComboBoxItem Content="Segoe UI" />
</ComboBox>
</ribbon:RibbonItemHost.ItemTemplate>
</ribbon:RibbonItemHost>
</ribbon:RibbonGroup>
关键属性
SfRibbon
| 属性 | 类型 | 说明 |
|---|---|---|
Tabs | RibbonTabCollection | 功能区选项卡集合 |
ContextualTabGroups | RibbonContextualTabGroupCollection | 条件选项卡组 |
Backstage | RibbonBackstage | Backstage 菜单(文件菜单) |
RightPane | object | 右侧窗格区域的内容 |
SelectedTab | RibbonTab | 当前选中的选项卡 |
SelectedIndex | int | 选中选项卡的索引 |
LayoutModeOptions | LayoutModeOptions | 可用布局模式(Normal、Simplified) |
ActiveLayoutMode | LayoutMode | 当前启用的布局(Normal 或 Simplified) |
RibbonTab
| 属性 | 类型 | 说明 |
|---|---|---|
Header | object | 选项卡标题文本/内容 |
Items | RibbonGroupCollection | 功能区组集合 |
RibbonGroup
| 属性 | 类型 | 说明 |
|---|---|---|
Header | object | 组标题文本 |
Items | RibbonItemCollection | 功能区项集合 |
ShowLauncherButton | bool | 显示组中的启动器按钮 |
LauncherButtonClick | event | 启动器按钮点击事件 |
LauncherButtonCommand | ICommand | 启动器按钮命令 |
RibbonButton(及其变体)
| 属性 | 类型 | 说明 |
|---|---|---|
Content | object | 按钮标签文本 |
Icon | IconElement | 按钮图标 |
AllowedSizeModes | RibbonElementSizeModes | 允许的尺寸(Small、Normal、Large) |
DisplayOptions | DisplayOptions | 布局可见性(Normal、Simplified、OverflowMenu) |
Command | ICommand | 按钮命令 |
Flyout | FlyoutBase | 下拉/拆分按钮的弹出界面 |
常见用例
用例 1:文档编辑器功能区
创建带有格式设置命令的 Word/Excel 风格功能区:
- 阅读: references/ribbon-items.md,了解按钮类型
- 阅读: references/tabs-and-groups.md,了解组织方式
用例 2:应用程序设置 Backstage
在 Backstage 视图中实现设置面板:
- 阅读: references/backstage.md,了解 Backstage 模式
用例 3:适用于小窗口的紧凑功能区
为受空间限制的 UI 启用简化布局:
- 阅读: references/simplified-layout.md,了解紧凑模式
用例 4:样式库
添加用于文档样式/主题的功能区库:
- 阅读: references/advanced-features.md,了解库的实现方式
用例 5:支持键盘访问的命令
为键盘导航实现 KeyTip:
- 阅读:references/advanced-features.md,了解 KeyTip 配置
用例 6:响应式功能区设计
妥善处理窗口大小调整:
- 阅读:references/advanced-features.md,了解大小调整行为
实现工作流
- 安装包:添加
Syncfusion.Ribbon.WinUINuGet 包 - 基本设置:创建包含选项卡和组的 SfRibbon → references/getting-started.md
- 添加命令:实现功能区按钮和控件 → references/ribbon-items.md
- 组织结构:按功能区域合理组织选项卡 → references/tabs-and-groups.md
- Backstage(可选):添加设置/选项菜单 → references/backstage.md
- 优化布局:如有需要,启用简化模式 → references/simplified-layout.md
- 增强用户体验:添加图库、KeyTip、ScreenTip → references/advanced-features.md
- 自定义:应用主题和模板 → references/ui-customization.md
相关技能
- ComboBox - 用于功能区中的下拉控件
- Implementing Syncfusion WinUI Components - 父级组件库技能