mcpField
S
syncfusion-winui-ribbon

syncfusion-winui-ribbon

github.com/syncfusion开发149 次安装1 周前更新
代码仓库

关于 syncfusion-winui-ribbon

介绍如何在 WinUI 3 桌面应用中构建 Syncfusion SfRibbon 命令栏,涵盖选项卡组织、Backstage 视图、紧凑布局、键盘导航和自适应行为。

主要功能

  1. 01按选项卡和组组织命令
  2. 02普通、下拉、拆分及切换按钮
  3. 03Backstage 视图和快速访问工具栏
  4. 04带溢出菜单的简化布局
  5. 05图库、KeyTip 和 ScreenTip
  6. 06自适应尺寸及自定义控件

适用场景

  1. 01为文档编辑器添加功能区命令
  2. 02创建应用设置 Backstage 视图
  3. 03让功能区适应紧凑窗口布局
  4. 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.md
backstage.md
getting-started.md
quick-access-toolbar.md
ribbon-items.md
simplified-layout.md
tabs-and-groups.md
ui-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
属性类型说明
TabsRibbonTabCollection功能区选项卡集合
ContextualTabGroupsRibbonContextualTabGroupCollection条件选项卡组
BackstageRibbonBackstageBackstage 菜单(文件菜单)
RightPaneobject右侧窗格区域的内容
SelectedTabRibbonTab当前选中的选项卡
SelectedIndexint选中选项卡的索引
LayoutModeOptionsLayoutModeOptions可用布局模式(Normal、Simplified)
ActiveLayoutModeLayoutMode当前启用的布局(Normal 或 Simplified)
RibbonTab
属性类型说明
Headerobject选项卡标题文本/内容
ItemsRibbonGroupCollection功能区组集合
RibbonGroup
属性类型说明
Headerobject组标题文本
ItemsRibbonItemCollection功能区项集合
ShowLauncherButtonbool显示组中的启动器按钮
LauncherButtonClickevent启动器按钮点击事件
LauncherButtonCommandICommand启动器按钮命令
RibbonButton(及其变体)
属性类型说明
Contentobject按钮标签文本
IconIconElement按钮图标
AllowedSizeModesRibbonElementSizeModes允许的尺寸(Small、Normal、Large)
DisplayOptionsDisplayOptions布局可见性(Normal、Simplified、OverflowMenu)
CommandICommand按钮命令
FlyoutFlyoutBase下拉/拆分按钮的弹出界面

常见用例

用例 1:文档编辑器功能区

创建带有格式设置命令的 Word/Excel 风格功能区:

用例 2:应用程序设置 Backstage

在 Backstage 视图中实现设置面板:

用例 3:适用于小窗口的紧凑功能区

为受空间限制的 UI 启用简化布局:

用例 4:样式库

添加用于文档样式/主题的功能区库:

用例 5:支持键盘访问的命令

为键盘导航实现 KeyTip:

用例 6:响应式功能区设计

妥善处理窗口大小调整:

实现工作流

  1. 安装包:添加 Syncfusion.Ribbon.WinUI NuGet 包
  2. 基本设置:创建包含选项卡和组的 SfRibbon → references/getting-started.md
  3. 添加命令:实现功能区按钮和控件 → references/ribbon-items.md
  4. 组织结构:按功能区域合理组织选项卡 → references/tabs-and-groups.md
  5. Backstage(可选):添加设置/选项菜单 → references/backstage.md
  6. 优化布局:如有需要,启用简化模式 → references/simplified-layout.md
  7. 增强用户体验:添加图库、KeyTip、ScreenTip → references/advanced-features.md
  8. 自定义:应用主题和模板 → references/ui-customization.md

相关技能

其他资源

评论

支持 Markdown