Skip to main content
All docs
V26.1
  • How to: Add Spell Check Items to the Standard Text Controls' Context Menu

    • 2 minutes to read

    The following code example shows how to add spell check items for the .NET RichTextBox control’s context menu.

    Result

    View Example

    Create Binding to the RichTextEditor’s Context Menu

    Create a new MenuItems property in code-behind and bind it to the RichTextBox’s ContextMenu property in XAML, as shown below:

    public MainWindow()
    {
        DataContext = this;
        InitializeComponent();
    }
    
    public ObservableCollection<object> MenuItems { get; } = new ObservableCollection<object>();
    
    <RichTextBox x:Name="richTextBox">
        <RichTextBox.ContextMenu>
            <ContextMenu ItemsSource="{Binding Path=MenuItems}"/>
        </RichTextBox.ContextMenu>
    </RichTextBox>
    

    Add SpellChecker Behavior

    Add the SpellChecker behavior to the RichTextBox in XAML. Refer to the Configure Spell-Checking Behavior lesson for more information about the SpellChecker behavior and an example on how to add dictionaries.

    <RichTextBox x:Name="richTextBox">
        <RichTextBox.ContextMenu>
            <ContextMenu ItemsSource="{Binding Path=MenuItems}"/>
        </RichTextBox.ContextMenu>
        <dxmvvm:Interaction.Behaviors>
            <dxspch:DXSpellChecker Culture="en-US" CheckAsYouType="True"/>
        </dxmvvm:Interaction.Behaviors>
    </RichTextBox>
    

    Handle the PreviewMouseRightButtonUp Event

    Call the GetErrorOperationCommands method to obtain a list of available commands and assign it to the MenuItems property in the PreviewMouseRightButtonUp event handler. The SpellCheckerCommand.DoCommand method executes the retrieved command.

    void RichTextBox_PreviewMouseRightButtonUp(object sender, MouseButtonEventArgs e)
    {
        MenuItems.Clear();
        var commands = this.richTextBox.GetErrorOperationCommands(e.GetPosition(this.richTextBox));
        foreach (var command in commands)
        {
            var menuItem = new MenuItem();
            menuItem.Header = command.Caption;
            menuItem.Click += (s, args) => command.DoCommand();
            menuItem.IsEnabled = command.Enabled;
            MenuItems.Add(menuItem);
        }
        if (MenuItems.Count == 0)
            MenuItems.Add(new MenuItem() { Header = "No Error", IsEnabled = false });
    }