Skip to main content

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.v23.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