Skip to main content

DevExpress v24.2 Update — Your Feedback Matters

Our What's New in v24.2 webpage includes product-specific surveys. Your response to our survey questions will help us measure product satisfaction for features released in this major update and help us refine our plans for our next major release.

Take the survey Not interested

RichEditMenuCustomization.Customizations Property

Allows you to customize the Rich Text Editor’s context menu. You can add, modify or remove menu items. This is a dependency property.

Namespace: DevExpress.Xpf.RichEdit.Menu

Assembly: DevExpress.Xpf.RichEdit.v24.2.dll

NuGet Package: DevExpress.Wpf.RichEdit

#Declaration

public ObservableCollection<IBarManagerControllerAction> Customizations { get; set; }

#Property Value

Type Description
ObservableCollection<DevExpress.Xpf.Bars.IBarManagerControllerAction>

A collection of bar actions.

#Example

The example below demonstrates how to customize the Text context menu.

Custom context menu

View Example

<dx:ThemedWindow x:Class="WpfRichEditorMenuCustomization.MainWindow" mc:Ignorable="d" Title="Rich Text Editor" 
                 Height="450" Width="800"
    xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="clr-namespace:WpfRichEditorMenuCustomization"
    xmlns:dxre="http://schemas.devexpress.com/winfx/2008/xaml/richedit" 
    xmlns:dxb="http://schemas.devexpress.com/winfx/2008/xaml/bars">
    <Grid>
        <dxre:RichEditControl Name="richTextEditor">
            <dxre:RichEditControl.MenuCustomizations>
                <dxre:RichEditMenuCustomization MenuType="Text">
                    <!--Add a separator after the first three menu items.-->
                    <dxb:InsertAction Index="4">
                        <dxb:BarItemSeparator />
                    </dxb:InsertAction>
                    <!--Insert a custom menu item to highlight selected text.-->
                    <dxb:InsertAction Index="5">
                        <dxb:BarButtonItem Content="Highlight Selection" 
                                           ItemClick="HighlightSelection_ItemClick" />
                    </dxb:InsertAction>
                    <!--Add a new item to the end of the context menu
                    and bind this item to the Rich Text Editor's command.-->
                    <dxb:BarButtonItem Command="{Binding RelativeSource={RelativeSource Self}, Mode=OneWay, 
                        Path=(dxre:RichEditControl.RichEdit).CommandProvider.InsertFloatingPicture}" 
                        Content="Insert Picture" />
                    <!--Change the "New Comment" item's content.-->
                    <dxb:UpdateAction ElementName="{x:Static dxre:DefaultBarItemNames.PopupMenuItem_NewComment}"
                                      PropertyName="Content"
                                      Value="Add Comment"/>
                    <!--Remove the "Increase Indent" item from the menu.-->
                    <dxb:RemoveAction ElementName="{x:Static dxre:DefaultBarItemNames.PopupMenuItem_IncreaseIndent}"/>
                    <!--Remove the "Decrease Indent" item from the menu.-->
                    <dxb:RemoveAction ElementName="{x:Static dxre:DefaultBarItemNames.PopupMenuItem_DecreaseIndent}"/>
                </dxre:RichEditMenuCustomization>
            </dxre:RichEditControl.MenuCustomizations>
        </dxre:RichEditControl>
    </Grid>
</dx:ThemedWindow>

Handle the Highlight Selection item’s ItemClick event to highlight selected text in yellow.

using DevExpress.XtraRichEdit.API.Native;
// ...

private void HighlightSelection_ItemClick(object sender, DevExpress.Xpf.Bars.ItemClickEventArgs e) {
    var selectedRanges = richTextEditor.Document.Selections;
    foreach (var range in selectedRanges) {
        var charProps = richTextEditor.Document.BeginUpdateCharacters(range);
        charProps.BackColor = System.Drawing.Color.Yellow;
        richTextEditor.Document.EndUpdateCharacters(charProps);
    }
}
See Also