mcpField
S
syncfusion-wpf-ribbon

syncfusion-wpf-ribbon

github.com/syncfusionDevelopment5160 installsUpdated 1w ago
Repository

About syncfusion-wpf-ribbon

A skill for implementing the Syncfusion Ribbon in WPF desktop applications. It covers organizing commands into tabs and groups, along with styling, state persistence, and multi-document scenarios.

Key features

  1. 01Organize commands into tabs and groups
  2. 02Add buttons, menus, and input controls
  3. 03Configure application menus and backstage views
  4. 04Save and load ribbon state
  5. 05Merge ribbons across documents
  6. 06Support keyboard and touch accessibility

Use cases

  1. 01Organize text editor formatting commands
  2. 02Group data analysis tool features
  3. 03Share commands in multi-document editors
  4. 04Build an Office-style application interface

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/syncfusion/wpf-ui-components-skills --skill syncfusion-wpf-ribbon

After installing, type/syncfusion-wpf-ribbonin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

references/
getting-started.md
ribbon-accessibility.md
ribbon-advanced-continued.md
ribbon-advanced.md
ribbon-buttons.md
ribbon-customization.md
ribbon-gallery.md
ribbon-inputs.md
ribbon-patterns-continued.md
ribbon-patterns.md
ribbon-structure.md
troubleshooting.md

Details

From the project README

Implementing Syncfusion WPF Ribbon

When to Use This Skill

Use this skill when you need to:

  • Create a ribbon interface in a WPF desktop application
  • Add ribbon tabs, groups, and controls (buttons, menus, galleries, inputs)
  • Configure application menus or backstage views
  • Customize ribbon appearance, styling, or layout
  • Implement state persistence or multi-document scenarios
  • Add accessibility features or touch support
  • Handle ribbon item interactions and data binding

Component Overview

The Syncfusion WPF Ribbon is a comprehensive navigation component that provides a modern, Microsoft Office-style ribbon interface for desktop applications. It organizes commands into tabs and groups, reducing UI clutter while making features discoverable.

Key capabilities:

  • Tab-based command organization with groups and columns
  • Built-in ribbon controls: buttons, menus, galleries, text inputs, checkboxes, radio buttons
  • Application menu and backstage view support
  • State persistence across application sessions
  • Multi-document ribbon merge for complex scenarios
  • Full keyboard and touch accessibility
  • Customizable styling and responsive layout

Documentation and Navigation Guide

Getting Started

📄 Read: references/getting-started.md

  • Installation and NuGet package setup
  • Basic ribbon creation in XAML
  • Namespace declarations and project setup
  • Adding your first tab and group
  • Hooking up basic click events
Ribbon Structure & Layout

📄 Read: references/ribbon-structure.md

  • Creating tabs and managing tab collections
  • Organizing controls into groups and columns
  • Application menu configuration
  • Backstage view setup
  • RibbonItemHost for custom hosting
Ribbon Buttons & Menus

📄 Read: references/ribbon-buttons.md

  • Standard RibbonButton implementation
  • SplitButton for split commands
  • MenuButton for quick menus
  • MenuItem hierarchy and nested menus
  • Command binding and click handlers
Ribbon Input Controls

📄 Read: references/ribbon-inputs.md

  • RibbonCheckBox and RibbonRadioButton
  • RibbonTextBox for text input
  • RibbonComboBox and RibbonListBox
  • RibbonSeparator for visual grouping
  • Data binding to ribbon inputs
Ribbon Gallery Control

📄 Read: references/ribbon-gallery.md

  • Gallery setup and item templates
  • Visual item rendering
  • Selection and item selection events
  • Filtering and searching galleries
  • Gallery groups for categorized items
Customization & Styling

📄 Read: references/ribbon-customization.md

  • StatusBar configuration below the ribbon
  • Styling and template customization
  • Theming and color schemes
  • Size groups and layout compression
  • Responsive ribbon behavior
Advanced Features

📄 Read: references/ribbon-advanced.md

  • Ribbon merge for multi-document interfaces
  • State persistence (saving/loading ribbon state)
  • Dynamic tab and group creation
  • Ribbon reduce layout (auto-collapsing)
  • Programmatic ribbon manipulation
Accessibility & Touch

📄 Read: references/ribbon-accessibility.md

  • Keyboard navigation and shortcuts
  • Tooltip support for discoverability
  • Touch input handling
  • Screen reader compatibility
  • Accessibility best practices
Patterns & Best Practices

📄 Read: references/ribbon-patterns.md

  • Common ribbon UI patterns
  • When to use application menu vs tabs
  • Ribbon organization principles
  • Performance considerations
  • Design best practices
Troubleshooting

📄 Read: references/troubleshooting.md

  • Button and menu issues
  • Input control issues
  • General setup problems

Quick Start Example

Here's a minimal WPF ribbon setup to get started:

<!-- MainWindow.xaml -->
<syncfusion:RibbonWindow x:Class="RibbonApp.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:syncfusion="http://schemas.syncfusion.com/wpf"
        Title="Ribbon Application" Height="600" Width="800">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="*"/>
            <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>
        
        <!-- Ribbon Control -->
        <syncfusion:Ribbon Grid.Row="0">
            <!-- Home Tab -->
            <syncfusion:RibbonTab Caption="Home">
                <!-- File Operations Bar -->
                <syncfusion:RibbonBar Header="File Operations">
                    <syncfusion:RibbonButton Label="New" 
                                             SmallIcon="Images/new.png"
                                             Click="OnNewClick" />
                    <syncfusion:RibbonButton Label="Open" 
                                             SmallIcon="Images/open.png"
                                             Click="OnOpenClick" />
                    <syncfusion:RibbonButton Label="Save" 
                                             SmallIcon="Images/save.png"
                                             Click="OnSaveClick" />
                </syncfusion:RibbonBar>
                
                <!-- Formatting Bar -->
                <syncfusion:RibbonBar Header="Formatting">
                    <syncfusion:RibbonComboBox Label="Font">
                        <syncfusion:RibbonComboBoxItem Content="Arial" />
                        <syncfusion:RibbonComboBoxItem Content="Times New Roman" />
                        <syncfusion:RibbonComboBoxItem Content="Courier New" />
                    </syncfusion:RibbonComboBox>
                </syncfusion:RibbonBar>
            </syncfusion:RibbonTab>
            
            <!-- Edit Tab -->
            <syncfusion:RibbonTab Caption="Edit">
                <syncfusion:RibbonBar Header="Clipboard">
                    <syncfusion:RibbonButton Label="Cut" Click="OnCutClick" />
                    <syncfusion:RibbonButton Label="Copy" Click="OnCopyClick" />
                    <syncfusion:RibbonButton Label="Paste" Click="OnPasteClick" />
                </syncfusion:RibbonBar>
            </syncfusion:RibbonTab>
        </syncfusion:Ribbon>
        
        <!-- Main Content Area -->
        <TextBox Grid.Row="1" AcceptsReturn="True" />
        <StatusBar Grid.Row="2" Height="30" />
    </Grid>
</syncfusion:RibbonWindow>
// MainWindow.xaml.cs
using Syncfusion.Windows.Tools.Controls;

public partial class MainWindow : RibbonWindow
{
    public MainWindow()
    {
        InitializeComponent();
    }

    private void OnNewClick(object sender, EventArgs e)
    {
        // Handle new document
    }

    private void OnOpenClick(object sender, EventArgs e)
    {
        // Handle open file
    }

    private void OnSaveClick(object sender, EventArgs e)
    {
        // Handle save file
    }
}

Common Patterns

Pattern 1: Ribbon with Application Menu

Create a File menu accessible via the top-left menu button:

<syncfusion:Ribbon>
    <syncfusion:Ribbon.ApplicationMenu>
        <syncfusion:ApplicationMenu>
            <syncfusion:MenuItem Header="New" />
            <syncfusion:MenuItem Header="Open" />
            <syncfusion:MenuItem Header="Save" />
            <syncfusion:MenuItemSeparator />
            <syncfusion:MenuItem Header="Exit" />
        </syncfusion:ApplicationMenu>
    </syncfusion:Ribbon.ApplicationMenu>
    
    <syncfusion:RibbonTab Caption="Home">
        <!-- Tab content -->
    </syncfusion:RibbonTab>
</syncfusion:Ribbon>
Pattern 2: Tab with Multiple Bars

Organize commands into logical groups within a tab:

<syncfusion:RibbonTab Caption="Tools">
    <syncfusion:RibbonBar Header="Analysis">
        <syncfusion:RibbonButton Label="Chart" />
        <syncfusion:RibbonButton Label="Graph" />
    </syncfusion:RibbonBar>
    
    <syncfusion:RibbonBar Header="Data">
        <syncfusion:RibbonButton Label="Sort" />
        <syncfusion:RibbonButton Label="Filter" />
    </syncfusion:RibbonBar>
</syncfusion:RibbonTab>
Pattern 3: Split Button with Dropdown

Create a button with a dropdown menu for related commands:

<syncfusion:SplitButton Label="Format">
    <syncfusion:RibbonMenuItem Header="Bold" />
    <syncfusion:RibbonMenuItem Header="Italic" />
    <syncfusion:RibbonMenuItem Header="Underline" />
</syncfusion:SplitButton>
Pattern 4: Command Binding with MVVM

Bind ribbon buttons to view model commands:

<syncfusion:RibbonButton Label="Save" 
                         Command="{Binding SaveCommand}"
                         CommandParameter="All" />

Key Props Reference

Ribbon
  • ApplicationMenu - Top-left menu content
  • BackStage - Backstage panel for file operations
  • QuickAccessToolBar - Quick Access Toolbar configuration
  • AutoPersist - Enable automatic state persistence
  • SaveRibbonState() / LoadRibbonState() - Save and load ribbon state
RibbonTab
  • Caption - Tab label (use Caption instead of Header)
  • IsVisible - Show/hide tab dynamically
RibbonBar
  • Header - Bar label (replaces RibbonGroup)
  • DialogLauncherCommand - Dialog launcher for advanced options
RibbonButton / SplitButton
  • Label - Button text
  • SmallIcon / MediumIcon / LargeIcon - Button images (use instead of Icon)
  • Click / Command - Event or command binding
  • SizeForm - Size variation (Large, Medium, Small, ExtraSmall)
  • IsCheckable - Toggle button behavior
RibbonComboBox / RibbonListBox
  • Label - Control label
  • SelectedItem - Currently selected value
  • ItemsSource - Data binding source
  • SelectionChanged - Selection event
RibbonTextBox
  • Text - Text value (not Label)
  • Width - Control width
RibbonCheckBox / RibbonRadioButton
  • Content - Control label (not Label)
  • IsChecked - Checked state
  • GroupName - Radio button grouping
RibbonGallery
  • ItemsSource - Gallery items
  • ItemTemplate - Visual template for items
  • ItemSelectionChangedCommand - Selection command

Common Use Cases

Use Case 1: Text Editor Application Create a ribbon with standard formatting commands (Font, Size, Bold, Italic, Underline, Alignment). See getting-started.md for setup.

Use Case 2: Data Analysis Tool Organize analysis, charting, and export features into separate tabs with galleries for chart types. See ribbon-gallery.md.

Use Case 3: Multi-Document Editor Use ribbon merge to share common commands while allowing document-specific commands. See ribbon-advanced.md.

Use Case 4: Office-Style Application Implement application menu for file operations, backstage view for settings, and contextual tabs. See ribbon-structure.md.


Next Steps:

Comments

Markdown supported