- name
- syncfusion-winui-ribbon
- description
- Guide for implementing the Syncfusion WinUI Ribbon control (SfRibbon) to organize application commands into tabs and groups, similar to Microsoft Office. Use this when working with ribbon-based navigation, Quick Access Toolbar (QAT), or backstage menus. This skill covers ribbon setup, tab and group configuration, keyboard navigation (KeyTip), and ScreenTip tooltips.
- metadata
- {"author":"Syncfusion Inc","version":"34.1.29"}
# Implementing Syncfusion WinUI Ribbons
Comprehensive guide for implementing Syncfusion's WinUI Ribbon (SfRibbon) control - a command bar that organizes application commands and tools into tabbed groups, providing a Microsoft Office-style interface for WinUI 3 desktop applications.
## When to Use This Skill
Use this skill when the user needs to:
- Implement a Ribbon control in a WinUI 3 application
- Organize application commands using tabs and groups (like Microsoft Office)
- Add ribbon buttons, dropdowns, split buttons, or toggle buttons
- Create a backstage menu for settings and options
- Implement Quick Access Toolbar (QAT) for frequently-used commands
- Enable simplified/compact ribbon layout for space-saving UI
- Add ribbon gallery controls for styles and templates
- Configure keyboard shortcuts with KeyTip
- Implement enhanced tooltips with ScreenTip
- Handle ribbon resizing and responsive behavior
- Host custom controls (ComboBox, CheckBox, etc.) in ribbon
- Customize ribbon appearance with themes and templates
- Create contextual tabs that appear based on user selection
## Component Overview
The Syncfusion WinUI Ribbon control provides a comprehensive command organization system for modern Windows applications. It organizes commands hierarchically:
**Hierarchy:** Ribbon → Tabs → Groups → Items (Buttons, Dropdowns, etc.)
**Key Capabilities:**
- **Tab & Group Organization**: Categorize commands logically
- **Multiple Button Types**: Regular, Dropdown, Split, Toggle buttons
- **Backstage View**: Separate view for application settings (like File menu in Office)
- **Simplified Layout**: Compact single-line mode with overflow menu
- **Ribbon Gallery**: Display collections of styles/templates
- **Quick Access Toolbar**: User-customizable toolbar for frequent commands
- **Keyboard Navigation**: KeyTip support for keyboard shortcuts
- **Enhanced Tooltips**: ScreenTip with rich content
- **Responsive Design**: Automatic resizing and item prioritization
- **Custom Controls**: Host any WinUI control in ribbon groups
**Package:** `Syncfusion.Ribbon.WinUI`
**Namespace:** `Syncfusion.UI.Xaml.Ribbon`
**Main Control:** `SfRibbon`
## Documentation and Navigation Guide
### 🚀 Getting Started
📄 **Read:** [references/getting-started.md](references/getting-started.md)
- Installation and NuGet package setup
- Namespace import and initialization
- Creating your first ribbon with basic tabs
- Adding ribbon to WinUI application
- License configuration
- Minimal working example
### 📑 Tabs and Groups
📄 **Read:** [references/tabs-and-groups.md](references/tabs-and-groups.md)
- Creating and configuring RibbonTabs
- Organizing commands with RibbonGroups
- Tab selection and navigation
- Contextual tab groups (conditional tabs)
- Tab appearance customization
- SelectFirstTabOnVisible behavior
### 🔘 Ribbon Items
📄 **Read:** [references/ribbon-items.md](references/ribbon-items.md)
- RibbonButton (standard button)
- RibbonDropDownButton (dropdown menu)
- RibbonSplitButton (click + dropdown)
- RibbonToggleButton (on/off states)
- Item sizing modes (Small, Normal, Large)
- Icon types and configuration
- RibbonComboBox in ribbon
- Hosting custom controls with RibbonItemHost
- Group launcher button
### 🎭 Backstage
📄 **Read:** [references/backstage.md](references/backstage.md)
- RibbonBackstage overview
- BackstageView control setup
- Creating custom backstage layouts
- Settings and options panels
- Backstage navigation patterns
- Exit backstage handling
### ⚡ Quick Access Toolbar
📄 **Read:** [references/quick-access-toolbar.md](references/quick-access-toolbar.md)
- QAT overview and purpose
- Adding commands to QAT
- Customization and positioning
- Common QAT patterns (Save, Undo, Redo)
### 📐 Simplified Layout
📄 **Read:** [references/simplified-layout.md](references/simplified-layout.md)
- Simplified layout overview (single-line compact mode)
- LayoutModeOptions and ActiveLayoutMode
- Switching between Normal and Simplified
- DisplayOptions per item (Normal, Simplified, OverflowMenu)
- Overflow menu behavior
- Compact UI design patterns
### 🎨 Advanced Features
📄 **Read:** [references/advanced-features.md](references/advanced-features.md)
- RibbonGallery for style collections
- KeyTip for keyboard navigation
- ScreenTip for enhanced tooltips
- Ribbon resizing and compact sizing
- Responsive ribbon design
- Window resize handling
### 🖌️ UI Customization
📄 **Read:** [references/ui-customization.md](references/ui-customization.md)
- RightPane configuration
- Theme customization
- Template overrides
- Custom styling
- Accessibility considerations
- Icon customization
## Quick Start Example
### Basic Ribbon with Tabs and Buttons
```xaml
<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">
<!-- Tabs -->
<ribbon:SfRibbon.Tabs>
<ribbon:RibbonTab Header="Home">
<!-- Clipboard Group -->
<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>
<!-- Font Group -->
<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# Code-behind:**
```csharp
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
}
}
}
```
## Common Patterns
### Pattern 1: Ribbon with Backstage
```xaml
<ribbon:SfRibbon x:Name="sfRibbon">
<!-- Backstage Menu -->
<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" />
<!-- Settings content -->
</StackPanel>
</ribbon:BackstageViewTabItem>
</ribbon:BackstageView.Items>
</ribbon:BackstageView>
</ribbon:RibbonBackstage>
</ribbon:SfRibbon.Backstage>
<!-- Tabs... -->
</ribbon:SfRibbon>
```
### Pattern 2: Simplified Layout with Overflow
```xaml
<ribbon:SfRibbon x:Name="sfRibbon"
LayoutModeOptions="Normal,Simplified"
ActiveLayoutMode="Simplified">
<ribbon:SfRibbon.Tabs>
<ribbon:RibbonTab Header="Home">
<ribbon:RibbonGroup Header="Actions">
<!-- Always visible in simplified -->
<ribbon:RibbonButton Content="Save"
Icon="Save"
DisplayOptions="Normal,Simplified" />
<!-- Only in overflow menu when simplified -->
<ribbon:RibbonButton Content="Export"
Icon="Export"
DisplayOptions="Normal,OverflowMenu" />
</ribbon:RibbonGroup>
</ribbon:RibbonTab>
</ribbon:SfRibbon.Tabs>
</ribbon:SfRibbon>
```
### Pattern 3: Contextual Tabs
```xaml
<ribbon:SfRibbon x:Name="sfRibbon">
<!-- Regular Tabs -->
<ribbon:SfRibbon.Tabs>
<ribbon:RibbonTab Header="Home">
<!-- Content -->
</ribbon:RibbonTab>
</ribbon:SfRibbon.Tabs>
<!-- Contextual Tab Groups (shown conditionally) -->
<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>
```
```csharp
// 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;
}
```
### Pattern 4: Hosting Custom Controls
```xaml
<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>
```
## Key Properties
### SfRibbon
| Property | Type | Description |
|----------|------|-------------|
| `Tabs` | `RibbonTabCollection` | Collection of ribbon tabs |
| `ContextualTabGroups` | `RibbonContextualTabGroupCollection` | Conditional tab groups |
| `Backstage` | `RibbonBackstage` | Backstage menu (File menu) |
| `RightPane` | `object` | Content for right pane area |
| `SelectedTab` | `RibbonTab` | Currently selected tab |
| `SelectedIndex` | `int` | Index of selected tab |
| `LayoutModeOptions` | `LayoutModeOptions` | Available layout modes (Normal, Simplified) |
| `ActiveLayoutMode` | `LayoutMode` | Current active layout (Normal or Simplified) |
### RibbonTab
| Property | Type | Description |
|----------|------|-------------|
| `Header` | `object` | Tab header text/content |
| `Items` | `RibbonGroupCollection` | Collection of ribbon groups |
### RibbonGroup
| Property | Type | Description |
|----------|------|-------------|
| `Header` | `object` | Group header text |
| `Items` | `RibbonItemCollection` | Collection of ribbon items |
| `ShowLauncherButton` | `bool` | Show launcher button in group |
| `LauncherButtonClick` | `event` | Launcher button click event |
| `LauncherButtonCommand` | `ICommand` | Launcher button command |
### RibbonButton (and variants)
| Property | Type | Description |
|----------|------|-------------|
| `Content` | `object` | Button label text |
| `Icon` | `IconElement` | Button icon |
| `AllowedSizeModes` | `RibbonElementSizeModes` | Allowed sizes (Small, Normal, Large) |
| `DisplayOptions` | `DisplayOptions` | Layout visibility (Normal, Simplified, OverflowMenu) |
| `Command` | `ICommand` | Button command |
| `Flyout` | `FlyoutBase` | Flyout for dropdown/split buttons |
## Common Use Cases
### Use Case 1: Document Editor Ribbon
Create a Word/Excel-style ribbon with formatting commands:
- **Read:** [references/ribbon-items.md](references/ribbon-items.md) for button types
- **Read:** [references/tabs-and-groups.md](references/tabs-and-groups.md) for organization
### Use Case 2: Application Settings Backstage
Implement a settings panel in backstage view:
- **Read:** [references/backstage.md](references/backstage.md) for backstage patterns
### Use Case 3: Compact Ribbon for Small Windows
Enable simplified layout for space-constrained UIs:
View on GitHub