Skip to main content
All docs
V24.1

IContextMenuItem Interface

An item of the built-in context menu in the Rich Text Editor.

Namespace: DevExpress.Blazor.Office

Assembly: DevExpress.Blazor.v24.1.dll

NuGet Package: DevExpress.Blazor

Declaration

public interface IContextMenuItem

Remarks

The IContextMenuItem interface defines an item in the built-in context menu. Use interface properties to specify the item’s availability, appearance, and behavior.

The following code snippet customizes context menu items:

<DxRichEdit CustomizeContextMenu=OnCustomizeContextMenu />

@code {
    DxPopup popup;
    Selection selection;
    string textToSearch;
    string link;
    // ...
    async Task OnCustomizeContextMenu(IContextMenuItemCollection items) {
        if (selection.Intervals[0].Length > 0) {
            var span = await selection.ActiveSubDocument.GetTextSpanAsync(selection.Intervals[0]);
            textToSearch = span.Text.Trim();
        }
        else
            textToSearch = null;
        var searchItem = items.AddCustomItem(0, "Google Search...", async () => {
            var url = $"https://www.google.com/search?q={HttpUtility.UrlEncode(textToSearch)}";
            await JSRuntime.InvokeVoidAsync("open", url, "_blank");
        });
        searchItem.Enabled = !string.IsNullOrEmpty(textToSearch);
        searchItem.IconCssClass = "search-icon";
        var hyperlinks = await selection.ActiveSubDocument.Hyperlinks.GetAllAsync();
        var hyperlink = hyperlinks.SingleOrDefault(h => Enumerable.Range(h.Interval.Start, h.Interval.Length).Contains(selection.CaretPosition));
        link = hyperlink?.Url;
        if (!string.IsNullOrEmpty(link)) {
            var openHyperlinkItem = items[RichEditContextMenuItemNames.OpenHyperlink];
            openHyperlinkItem.BeginGroup = false;
            var index = items.IndexOf(openHyperlinkItem);
            var showURLItem = items.AddCustomItem(index, "Show URL");
            showURLItem.Click = async () => {
                if (popup is not null)
                    await popup.ShowAsync();
            };
            showURLItem.BeginGroup = true;
        }
        items.Remove(RichEditContextMenuItemNames.CutSelection);
        items.Remove(RichEditContextMenuItemNames.CopySelection);
        items.Remove(RichEditContextMenuItemNames.Paste);
        var clipboardItem = items.AddCustomItem(1, "Clipboard");
        clipboardItem.BeginGroup = true;
        clipboardItem.Items.Add(RichEditContextMenuItemNames.CutSelection);
        clipboardItem.Items.Add(RichEditContextMenuItemNames.CopySelection);
        clipboardItem.Items.Add(RichEditContextMenuItemNames.Paste);
    }
}

customize-contextmenu-items

Run Demo: Context Menu Customization

See Also