# Ribbon Page | WPF Controls | DevExpress Documentation

The [Ribbon Control](/WPF/7954/controls-and-libraries/ribbon-bars-and-menu/ribbon/ribbon-structure/ribbon-control) consists of [page categories](/WPF/7960/controls-and-libraries/ribbon-bars-and-menu/ribbon/ribbon-structure/ribbon-page-categories-and-contextual-pages), which own **ribbon pages**. The pages are represented as tabs, and they are structurally and visually split into [groups](/WPF/7956/controls-and-libraries/ribbon-bars-and-menu/ribbon/ribbon-structure/ribbon-page-group) that display various commands, static items, editors and galleries. The following image shows a RibbonControl containing two pages (Home and Gallery Page). The Home page, which is active, consists of two groups (File and Edit):

![RibbonControl](/WPF/images/ribboncontrol11579.png)

Each Ribbon page in the RibbonControl belongs to either the default or custom [page category](/WPF/7960/controls-and-libraries/ribbon-bars-and-menu/ribbon/ribbon-structure/ribbon-page-categories-and-contextual-pages). Pages that belong to the default page category are displayed at the left edge of the RibbonControl. Typically, these pages are designed to be always visible during application runtime. If you need to create contextual pages (pages that provide context specific commands), use custom page categories. To learn more, see [Ribbon Page Categories and Contextual Pages](/WPF/7960/controls-and-libraries/ribbon-bars-and-menu/ribbon/ribbon-structure/ribbon-page-categories-and-contextual-pages).

## Ribbon Page Settings

Ribbon pages are represented by the [RibbonPage](/WPF/DevExpress.Xpf.Ribbon.RibbonPage) class objects. 
For each page, specify a caption ([RibbonPage.Caption](/WPF/DevExpress.Xpf.Ribbon.RibbonPage.Caption)) that will be displayed in the corresponding tab.

To add [groups](/WPF/7956/controls-and-libraries/ribbon-bars-and-menu/ribbon/ribbon-structure/ribbon-page-group) to a Ribbon page, add [RibbonPageGroup](/WPF/DevExpress.Xpf.Ribbon.RibbonPageGroup) objects to the [RibbonPage.Groups](/WPF/DevExpress.Xpf.Ribbon.RibbonPage.Groups) collection. In XAML, you can define RibbonPageGroup objects directly between the RibbonPage start and end tags.

- XAML

<section id="tabpanel_YfxrTBlhMx_tabid-xaml" role="tabpanel" data-tab="tabid-xaml">
<pre><code class="lang-xaml">&lt;dxr:RibbonControl DockPanel.Dock=&quot;Top&quot; RibbonStyle=&quot;Office2010&quot;&gt;
    &lt;dxr:RibbonDefaultPageCategory&gt;
        &lt;dxr:RibbonPage Caption=&quot;Home&quot;&gt;
            &lt;dxr:RibbonPageGroup Caption=&quot;Clipboard&quot;&gt;
                &lt;dxb:BarButtonItem x:Name=&quot;btnPaste&quot; Content=&quot;Paste&quot; LargeGlyph=&quot;{dx:DXImage Image=Paste_32x32.png}&quot; Glyph=&quot;{dx:DXImage Image=Paste_16x16.png}&quot;/&gt;
                &lt;dxb:BarButtonItem x:Name=&quot;btnCut&quot; Content=&quot;Cut&quot; Glyph=&quot;{dx:DXImage Image=Cut_16x16.png}&quot; /&gt;
                &lt;dxb:BarButtonItem x:Name=&quot;btnCopy&quot; Content=&quot;Copy&quot; Glyph=&quot;{dx:DXImage Image=Copy_16x16.png}&quot;/&gt;
            &lt;/dxr:RibbonPageGroup&gt;
            &lt;dxr:RibbonPageGroup Caption=&quot;Font&quot;&gt;
                &lt;dxr:BarButtonGroup&gt;
                    &lt;dxb:BarButtonItem Content=&quot;Bold&quot; Glyph=&quot;{dx:DXImage Image=Bold_16x16.png}&quot;/&gt;
                    &lt;dxb:BarButtonItem Content=&quot;Italic&quot; Glyph=&quot;{dx:DXImage Image=Italic_16x16.png}&quot;/&gt;
                    &lt;dxb:BarButtonItem Content=&quot;Underline&quot; Glyph=&quot;{dx:DXImage Image=Underline_16x16.png}&quot;/&gt;
                &lt;/dxr:BarButtonGroup&gt;

            &lt;/dxr:RibbonPageGroup&gt;
        &lt;/dxr:RibbonPage&gt;
        &lt;dxr:RibbonPage Caption=&quot;Settings&quot;&gt;

        &lt;/dxr:RibbonPage&gt;
    &lt;/dxr:RibbonDefaultPageCategory&gt;
&lt;/dxr:RibbonControl&gt;
</code></pre></section>

You can access a category that owns a page via the [RibbonPage.PageCategory](/WPF/DevExpress.Xpf.Ribbon.RibbonPage.PageCategory) property. The category’s [RibbonPageCategoryBase.IsDefault](/WPF/DevExpress.Xpf.Ribbon.RibbonPageCategoryBase.IsDefault) property indicates whether the category is default or custom.

## Navigating Pages and Controlling Page Visibility

The currently active page is specified by the [RibbonControl.SelectedPage](/WPF/DevExpress.Xpf.Ribbon.RibbonControl.SelectedPage) property. Assigning a page to this property allows you to activate this page.
You can also activate a page via the [RibbonPage.IsSelected](/WPF/DevExpress.Xpf.Ribbon.RibbonPage.IsSelected) property.

It’s possible to hide a particular page via its [RibbonPage.IsVisible](/WPF/DevExpress.Xpf.Ribbon.RibbonPage.IsVisible) property. If a page belongs to a custom category, you can hide all pages in this category by setting the [RibbonPageCategoryBase.IsVisible](/WPF/DevExpress.Xpf.Ribbon.RibbonPageCategoryBase.IsVisible) property to **false**.

## Examples

- [How to define a default ribbon category with commands](/WPF/8179/controls-and-libraries/ribbon-bars-and-menu/ribbon/examples/how-to-define-a-default-ribbon-category-with-commands)
- [How to define a custom ribbon category](/WPF/8180/controls-and-libraries/ribbon-bars-and-menu/ribbon/examples/how-to-define-a-custom-ribbon-category)