RibbonSpace.Core 1.1.0

dotnet add package RibbonSpace.Core --version 1.1.0
                    
NuGet\Install-Package RibbonSpace.Core -Version 1.1.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="RibbonSpace.Core" Version="1.1.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="RibbonSpace.Core" Version="1.1.0" />
                    
Directory.Packages.props
<PackageReference Include="RibbonSpace.Core" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add RibbonSpace.Core --version 1.1.0
                    
#r "nuget: RibbonSpace.Core, 1.1.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package RibbonSpace.Core@1.1.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=RibbonSpace.Core&version=1.1.0
                    
Install as a Cake Addin
#tool nuget:?package=RibbonSpace.Core&version=1.1.0
                    
Install as a Cake Tool

<p align="center"> <img src="https://raw.githubusercontent.com/wieslawsoltes/RibbonSpace/main/build/icon.png" width="96" alt="RibbonSpace" /> </p>

<h1 align="center">RibbonSpace</h1>

<p align="center"> <b>A modern, Office-style Ribbon for Uno Platform and WinUI 3.</b><br/> Classic and simplified layouts, adaptive resizing, contextual tabs, backstage, Quick Access Toolbar, KeyTips, galleries with live preview, Office color pickers, ScreenTips, command search, customization, toolbars and full MVVM. </p>

<p align="center"> <a href="https://github.com/wieslawsoltes/RibbonSpace/actions/workflows/build.yml"><img src="https://github.com/wieslawsoltes/RibbonSpace/actions/workflows/build.yml/badge.svg" alt="Build" /></a> <a href="https://www.nuget.org/packages/RibbonSpace.Uno"><img src="https://img.shields.io/nuget/v/RibbonSpace.Uno.svg?label=RibbonSpace.Uno" alt="NuGet" /></a> <a href="https://www.nuget.org/packages/RibbonSpace.WinUI"><img src="https://img.shields.io/nuget/v/RibbonSpace.WinUI.svg?label=RibbonSpace.WinUI" alt="NuGet" /></a> <a href="https://www.nuget.org/packages/RibbonSpace.Core"><img src="https://img.shields.io/nuget/v/RibbonSpace.Core.svg?label=RibbonSpace.Core" alt="NuGet" /></a> <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue.svg" alt="MIT" /></a> <a href="https://wieslawsoltes.github.io/RibbonSpace/"><img src="https://img.shields.io/badge/demo-WebAssembly-5B5FC7.svg" alt="Live demo" /></a> </p>

Word-style ribbon built with RibbonSpace

RibbonSpace is the shared command UI for the Uno "Space" applications (TextSpace, GridSpace, PresentationSpace, NoteSpace, DataSpace, CadSpace, and ImageSpace, VectorSpace and the other toolbar-based apps). It was designed after studying all seventeen of them and modern Word, Excel and PowerPoint (research).

It runs on every Uno Platform target: Windows, macOS, Linux, WebAssembly, iOS and Android. It also runs natively in WinUI 3 (Windows App SDK) apps that don't use Uno. Both packages compile the same sources, so they share every control, feature and fix.

Highlights

Adaptive layout Groups shrink Large → Medium → Small → Collapsed (popup), with SizeDefinition, ReductionOrder, row layouts (Font / Paragraph) and scrolling as the last resort.
Simplified ribbon Office's single-line ribbon with a "More options" overflow of linked copies, plus per-item SimplifiedVisibility.
Contextual tabs Coloured contextual tab groups ("Table Tools") with auto-select, and the previous tab restored when they hide.
Backstage Full-window File view with pages, actions, footer items, an accent pane, animation and KeyTips.
Quick Access Toolbar Add or remove any command (linked copies that stay in sync), customize menu, above / below / title bar, labels, persistence.
KeyTips Alt / F10 with multi-level, multi-letter, collision-free tips that reach collapsed groups, launchers, overflow, backstage and the QAT.
Command controls Buttons, split buttons (checkable, follow-last-choice), drop-downs, toggles and radio groups, check boxes, button groups, stacks.
Inputs Editable combo boxes (font preview, values not in the list), spinners with units and drag-scrubbing, text boxes, sliders, segmented controls.
Galleries In-ribbon galleries that resize with the group, expand into categorized, filterable popups, have footer commands and live preview.
Colour and table pickers Office palette with theme shades, standard / recent / automatic / no colour and More Colors; Insert Table grid picker.
Search Microsoft Search box (Alt+Q): fuzzy, acronym and keyword ranking over every command, plus a VS Code-style command palette.
Title bar and status bar QAT, title, search and account; OS title-bar integration; status bar with Office zoom control.
Toolbars Horizontal / vertical / two-column tool palettes with "⋯" overflow, tool option bars, a classic menu bar.
MVVM Bind a RibbonModel. Everything is generated and two-way synchronized; string-id routing via ItemInvoked, ICommand, or a command catalog.
Customization and state Office "Customize the Ribbon / QAT" dialog, hide / rename / reorder, custom tabs and groups, import / export, versioned AOT-safe JSON state, plugin merging.
CAD ribbons AutoCAD-class features (guide): CAD theme style, expanded panels with pushpin, minimize to panel titles / buttons or cycle, floating panels, Show Tabs / Panels menus, progressive tooltips, application menu with search and recent documents, layer and property drop-downs, line-art icons.
WinUI 3 RibbonSpace.WinUI brings the same controls to plain Windows App SDK apps. It is compiled from the same sources, and the gallery and runtime UI tests run on both (guide).
Theming Lookless templates; Light / Dark / HighContrast; Office or CAD surface style; 12 application palettes plus custom accents, applied live; Colorful or Neutral chrome; Compact / Comfortable / Touch density; fully custom metrics.
Quality Accessibility peers and stable automation ids, localization (en, de, fr, es, pl), RTL, 95 unit tests and 85 runtime UI tests (run on Uno and on WinUI), trimming / AOT friendly.

<table> <tr> <td colspan="2"><img src="https://raw.githubusercontent.com/wieslawsoltes/RibbonSpace/main/docs/images/cad.png" alt="CAD workspace" /><br/><sub>CAD: AutoCAD-class ribbon with the CAD theme, layer drop-down, floating and expanded panels (<a href="https://github.com/wieslawsoltes/RibbonSpace/blob/main/docs/cad.md">guide</a>)</sub></td> </tr> <tr> <td><img src="https://raw.githubusercontent.com/wieslawsoltes/RibbonSpace/main/docs/images/cad-appmenu.png" alt="CAD application menu" /><br/><sub>Application menu with search, sub-commands and recent documents</sub></td> <td><img src="https://raw.githubusercontent.com/wieslawsoltes/RibbonSpace/main/docs/images/cad-tooltip.png" alt="Progressive tooltip" /><br/><sub>Progressive tooltip with extended help</sub></td> </tr> <tr> <td><img src="https://raw.githubusercontent.com/wieslawsoltes/RibbonSpace/main/docs/images/excel.png" alt="Excel style MVVM ribbon" /><br/><sub>Excel: 100% MVVM (<code>RibbonModel</code>)</sub></td> <td><img src="https://raw.githubusercontent.com/wieslawsoltes/RibbonSpace/main/docs/images/ppt.png" alt="PowerPoint simplified ribbon" /><br/><sub>PowerPoint: simplified ribbon</sub></td> </tr> <tr> <td><img src="https://raw.githubusercontent.com/wieslawsoltes/RibbonSpace/main/docs/images/keytips-home.png" alt="KeyTips" /><br/><sub>KeyTips (Alt → H)</sub></td> <td><img src="https://raw.githubusercontent.com/wieslawsoltes/RibbonSpace/main/docs/images/gallery.png" alt="Gallery" /><br/><sub>Expanded gallery with categories, filter and footer</sub></td> </tr> <tr> <td><img src="https://raw.githubusercontent.com/wieslawsoltes/RibbonSpace/main/docs/images/backstage.png" alt="Backstage" /><br/><sub>Backstage</sub></td> <td><img src="https://raw.githubusercontent.com/wieslawsoltes/RibbonSpace/main/docs/images/customize.png" alt="Customize dialog" /><br/><sub>Customize the Ribbon</sub></td> </tr> <tr> <td><img src="https://raw.githubusercontent.com/wieslawsoltes/RibbonSpace/main/docs/images/color.png" alt="Color picker" /><br/><sub>Office colour picker</sub></td> <td><img src="https://raw.githubusercontent.com/wieslawsoltes/RibbonSpace/main/docs/images/search.png" alt="Search" /><br/><sub>Command search (Alt+Q)</sub></td> </tr> <tr> <td><img src="https://raw.githubusercontent.com/wieslawsoltes/RibbonSpace/main/docs/images/dark.png" alt="Dark theme" /><br/><sub>Dark theme</sub></td> <td><img src="https://raw.githubusercontent.com/wieslawsoltes/RibbonSpace/main/docs/images/colorful.png" alt="Colorful chrome" /><br/><sub>Colorful chrome, PowerPoint palette</sub></td> </tr> <tr> <td><img src="https://raw.githubusercontent.com/wieslawsoltes/RibbonSpace/main/docs/images/contextual.png" alt="Contextual tabs" /><br/><sub>Contextual tabs (Table Tools)</sub></td> <td><img src="https://raw.githubusercontent.com/wieslawsoltes/RibbonSpace/main/docs/images/tools.png" alt="Toolbars" /><br/><sub>Menu bar, option bar, tool palette, rail, floating command bar</sub></td> </tr> </table>

Packages

Package NuGet Use it for
RibbonSpace.Uno NuGet Uno Platform 6 apps, on every head
RibbonSpace.WinUI NuGet WinUI 3 (Windows App SDK) apps without Uno (guide)
RibbonSpace.Core NuGet UI-agnostic models, commands, layout algorithms, KeyTips, search, state, palettes and strings, for view models that must not depend on a UI framework (net10.0, net9.0)
dotnet add package RibbonSpace.Uno     # Uno Platform apps
dotnet add package RibbonSpace.WinUI   # WinUI 3 apps

RibbonSpace.Uno and RibbonSpace.WinUI both depend on RibbonSpace.Core.

Supported platforms

Platform Package Target framework Rendering
Windows, macOS, Linux (X11 / framebuffer) RibbonSpace.Uno net10.0-desktop Uno Skia
WebAssembly RibbonSpace.Uno net10.0-browserwasm Uno Skia
iOS, Android RibbonSpace.Uno net10.0-ios, net10.0-android Uno Skia
Windows App SDK head of an Uno app RibbonSpace.Uno net10.0-windows10.0.26100 WinUI 3
WinUI 3 app (Windows 10 1809+, Windows App SDK 1.7+) RibbonSpace.WinUI net10.0-windows10.0.19041.0 or later WinUI 3

Quick start (Uno Platform XAML)

No namespace declaration or prefix is needed: RibbonSpace registers its types in Uno.Sdk's global XAML namespace (implicit XAML namespaces are on by default), so <Ribbon> works like any built-in control. The prefixed forms (rs: without declaration, xmlns:rs="https://github.com/wieslawsoltes/RibbonSpace" or xmlns:rs="using:RibbonSpace.Controls") remain available, and XAML compiled by WinUI's XAML compiler (WinUI 3 apps, Windows App SDK heads) needs the using: form (see XAML namespaces).

<Grid RowDefinitions="Auto,Auto,*">
  <RibbonTitleBar Title="Report" AppIcon="&#xE8A5;" Ribbon="{x:Bind Ribbon}" />
  <Ribbon x:Name="Ribbon" Grid.Row="1" ItemInvoked="OnItemInvoked">
    <RibbonTab Id="home" Header="Home">
      <RibbonGroup Id="clipboard" Header="Clipboard" IsDialogLauncherVisible="True">
        <RibbonSplitButton Id="paste" Label="Paste" Icon="&#xE77F;" SizeDefinition="Large" Shortcut="Ctrl+V">
          <MenuFlyout><MenuFlyoutItem Text="Keep Text Only" /></MenuFlyout>
        </RibbonSplitButton>
        <RibbonButton Id="cut" Label="Cut" Icon="&#xE8C6;" Command="{x:Bind ViewModel.CutCommand}" />
        <RibbonButton Id="copy" Label="Copy" Icon="&#xE8C8;" />
      </RibbonGroup>
      <RibbonGroup Id="font" Header="Font" ItemsLayout="Rows" RowCount="2">
        <RibbonStackPanel>
          <RibbonFontComboBox Text="Aptos" />
          <RibbonFontSizeComboBox Text="11" />
        </RibbonStackPanel>
        <RibbonStackPanel>
          <RibbonButtonGroup>
            <RibbonToggleButton Id="bold" Label="Bold" Icon="&#xE8DD;" Shortcut="Ctrl+B" IsChecked="{x:Bind ViewModel.IsBold, Mode=TwoWay}" />
            <RibbonToggleButton Id="italic" Label="Italic" Icon="&#xE8DB;" Shortcut="Ctrl+I" />
          </RibbonButtonGroup>
          <RibbonColorPicker Id="fontColor" Label="Font Color" />
        </RibbonStackPanel>
      </RibbonGroup>
    </RibbonTab>
  </Ribbon>
</Grid>

Quick start (WinUI 3)

WinUI's XAML compiler resolves using: namespaces only, so WinUI 3 apps declare a prefix. Everything else (MVVM, commands, KeyTips, QAT, backstage, theming, state) works as on Uno:

<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:rs="using:RibbonSpace.Controls">
  <Grid RowDefinitions="Auto,Auto,*">
    <rs:RibbonTitleBar Title="Report" Ribbon="{x:Bind Ribbon}" />
    <rs:Ribbon x:Name="Ribbon" Grid.Row="1" ItemInvoked="OnItemInvoked">
      <rs:RibbonTab Id="home" Header="Home">
        <rs:RibbonGroup Id="clipboard" Header="Clipboard">
          <rs:RibbonButton Id="paste" Label="Paste" Icon="&#xE77F;" Size="Large" />
          <rs:RibbonButton Id="cut" Label="Cut" Icon="&#xE8C6;" />
        </rs:RibbonGroup>
      </rs:RibbonTab>
    </rs:Ribbon>
  </Grid>
</Window>

The gallery running as a WinUI 3 app

The WinUI guide covers requirements, theme resources, title bar integration and how the port shares the Uno sources.

Quick start (MVVM)

var ribbon = new RibbonModel { CommandCatalog = catalog };
ribbon.Tabs.Add(new RibbonTabModel("home", "Home")
{
    Groups =
    {
        new RibbonGroupModel("clipboard", "Clipboard", RibbonIcons.Paste)
        {
            Items =
            {
                new RibbonSplitButtonModel("paste", "Paste", RibbonIcons.Paste) { CommandId = "paste" },
                new RibbonToggleButtonModel("bold", "Bold", RibbonIcons.Bold) { Shortcut = "Ctrl+B" },
                new RibbonColorPickerModel("fontColor", "Font Color", RibbonIcons.FontColor),
            },
        },
    },
});
<Ribbon Model="{x:Bind ViewModel.Ribbon}" />

Checked states, values, selection, display modes, contextual groups, the QAT and the backstage stay in two-way sync. See MVVM.

Documentation

Getting started · WinUI 3 · WinUI and Uno differences · Architecture · XAML · MVVM · Commands and keyboard · Controls reference · Layout · Tabs · QAT · Backstage · KeyTips · Search · Galleries and pickers · Toolbars and chrome · Theming · Localization · Customization and state · Accessibility · Migration · Testing · Releasing

dotnet run --project samples/RibbonSpace.Demo -f net10.0-desktop

It has Word (XAML), Excel (MVVM), PowerPoint (simplified), toolbars and palettes, CAD, and settings (theme, palette, chrome, density, layout, language, state JSON, event log). It also runs in the browser: wieslawsoltes.github.io/RibbonSpace, and as a WinUI 3 app (dotnet run --project samples/RibbonSpace.WinUI.Demo on Windows).

Build and test

dotnet build RibbonSpace.slnx
dotnet test tests/RibbonSpace.Core.Tests
dotnet run --project tests/RibbonSpace.Uno.RuntimeTests -f net10.0-desktop   # runtime UI tests in a real window

Requirements: .NET 10 SDK, and Uno.Sdk 6.7 (resolved from global.json). Building for WebAssembly needs the wasm-tools workload, and building every target needs android and ios too (-p:RibbonSpaceAllTargets=true). On Windows that also adds the WinAppSDK target, which must be built with Visual Studio's msbuild /restore rather than dotnet build.

WinUI 3 (on Windows; plain dotnet build works):

dotnet build RibbonSpace.WinUI.slnx
dotnet run --project samples/RibbonSpace.WinUI.Demo
dotnet run --project tests/RibbonSpace.WinUI.RuntimeTests

License

MIT © Wiesław Šoltés

Product Compatible and additional computed target framework versions.
.NET net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net10.0

    • No dependencies.
  • net9.0

    • No dependencies.

NuGet packages (2)

Showing the top 2 NuGet packages that depend on RibbonSpace.Core:

Package Downloads
RibbonSpace.Uno

Professional Office-style Ribbon for Uno Platform: classic and simplified layouts, adaptive group resizing, contextual tabs, backstage, Quick Access Toolbar, KeyTips, galleries, color pickers, ScreenTips, command search, customization, toolbars and full MVVM support. Themeable and lookless.

RibbonSpace.WinUI

Professional Office-style Ribbon for WinUI 3 (Windows App SDK): classic and simplified layouts, adaptive group resizing, contextual tabs, backstage, Quick Access Toolbar, KeyTips, galleries, color pickers, ScreenTips, command search, customization, toolbars and full MVVM support. Themeable and lookless.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.1.0 44 10/3/2026
1.1.0-preview.1 37 10/3/2026
1.0.0 41 10/1/2026