New to Telerik UI for WPFStart a free 30-day trial

Keyboard Support

Updated on Sep 15, 2025

Telerik RichTextBox for WPF supports the commanding mechanism in WPF. There are default key-bindings defined for the most widely used commands.

 

Action

Hotkey

Open new document

Ctrl+N

Open existing document

Ctrl+O

Save

Ctrl+S

Print

Ctrl+P

Copy

Ctrl+C

Paste

Ctrl+V

Cut

Ctrl+X

Delete

Delete

Delete previous symbol

Back, Ctrl+Back, Shift+Back

Undo

Ctrl+Z

Redo

Ctrl+Y

InsertLineBreak

Shift+Enter

InsertPageBreak

Ctrl+Enter

InsertColumnBreak

Ctrl+Enter, Shift+Enter

ToggleBold

Ctrl+B, Ctrl+Shift+B

ToggleItalic

Ctrl+I, Ctrl+Shift+I

ToggleSuperscript

Ctrl+'+'

ToggleSubscript

Ctrl+Shift+'+'

ToggleUnderline

Ctrl+U

ToggleFormattingSymbols

Ctrl+D8, Shift+D8

ClearFormatting

Ctrl+Space

CopyFormatting

Ctrl+Shift+C

PasteFormatting

Ctrl+Shift+V

CancelFormatPainter or ExitHeaderFooterEditMode, depending on the current editing context

Esc

IncrementFontSize

Ctrl+Shift+OemPeriod

DecrementFontSize

Ctrl+Shift+OemComma

ChangeTextAlignment with parameter RadTextAlignment.Justify

Ctrl+J

ChangeTextAlignment with parameter RadTextAlignment.Right

Ctrl+R

ChangeTextAlignment with parameter RadTextAlignment.Left

Ctrl+L

ChangeTextAlignment with parameter RadTextAlignment.Center

Ctrl+E

TabForward

Tab

TabBackward

Shift+Tab

InsertText with parameter "\t"

Ctrl+Tab

Insert non-breaking space

Ctrl+Space

SelectAll

Ctrl+A

MoveCaret with parameter MoveCaretDirections.Previous

Left Arrow

MoveCaret with parameter MoveCaretDirections.Next

Right Arrow

MoveCaret with parameter MoveCaretDirections.PreviousWord

Ctrl+Left Arrow

MoveCaret with parameter MoveCaretDirections.NextWord

Ctrl+Right Arrow

MoveCaret with parameter MoveCaretDirections.Up

Upper Arrow

MoveCaret with parameter MoveCaretDirections.Down

Down Arrow

MoveCaret with parameter MoveCaretDirections. ParagraphStart

Ctrl+Upper Arrow

MoveCaret with parameter MoveCaretDirections. ParagraphEnd

Ctrl+Down Arrow

MoveCaret with parameter MoveCaretDirections.Home

Home

MoveCaret with parameter MoveCaretDirections.DocumentStart. This moves the caret at the first position of the document.

Ctrl+Home

MoveCaret with parameter MoveCaretDirections.End

End

MoveCaret with parameter MoveCaretDirections.DocumentEnd

Ctrl+End

MoveCaret with parameter MoveCaretDirections.PageUp

PageUp

MoveCaret with parameter MoveCaretDirections.PageDown

PageDown

ShowSpellCheckingDialog

F7

ShowFindReplaceDialog

Ctrl+F

ShowFontPropertiesDialog

Ctrl+D

ShowInsertHyperlinkDialog

Ctrl+K

Now these key bindings can be overridden and customized to the liking of the user. What is more, new bindings can be added to both the Commands exposed through the RichTextBoxCommands class or to user-defined ones in a quite straight-forward way. This is how it can be done in XAML:

Example 1: Customize InputBindings

XAML

    <telerik:RadRichTextBox Name="radRichTextBox">
      <telerik:RadRichTextBox.InputBindings>
        <!-- Bind Spell Checking to Ctrl+Shift+S -->
        <KeyBinding Gesture="Ctrl+Shift+S" Command="telerikDocs:RichTextBoxCommands.ShowSpellCheckingDialog"/>
        <!-- Stop Toggle Bold on Ctrl+Shift+B -->
        <KeyBinding Gesture="Ctrl+Shift+B"/>
        <!-- Re-map Ctrl+Space from Clear Formating to ShowManageBookmarksDialog -->
        <KeyBinding Gesture="Ctrl+Space" Command="telerikDocs:RichTextBoxCommands.ShowManageBookmarksDialog"/>
      </telerik:RadRichTextBox.InputBindings>
    </telerik:RadRichTextBox>

Please note that in the above code snippet the telerikDocs namespace is defined as follows:

Example 2: Namespace definition

XAML

	xmlns:telerikDocs="clr-namespace:Telerik.Windows.Documents.RichTextBoxCommands;assembly=Telerik.Windows.Documents"

Example 3: Disable the shortcut for creating a new document in code-behind

C#
    
    this.radRichTextBox.RegisteredApplicationCommands.Remove(System.Windows.Input.ApplicationCommands.New);

Some of the key combinations included by default in RadRichTextBox pass different parameters to the commands so that they can execute according to the current context. An example of such commands are TabForward and TabBackward.

  • By default, the tab symbol can always be inserted with Ctrl+Tab shortcut.

  • By default, the Tab shortcut is bound to the TabForward command - a command with more complex, context-dependent behavior. You can remap the shortcut to the InsertText command with the tab symbol as a parameter.

Example 4: Remap the shortcut to different command

XAML

    <telerik:RadRichTextBox >
        <telerik:RadRichTextBox.InputBindings>
            <KeyBinding Gesture="Tab" Command="telerikDocs:RichTextBoxCommands.InsertText" CommandParameter="&#x09;" />
        </telerik:RadRichTextBox.InputBindings>
    </telerik:RadRichTextBox>

You can fine-tune the behavior of the TabForward command, which is bound to the Tab shortcut by default using the exposed parameter values.

Example 5: Customize command behavior through its parameters

XAML

    <telerik:RadRichTextBox.InputBindings>
        <KeyBinding Gesture="Tab" Command="telerikDocs:RichTextBoxCommands.TabForward" CommandParameter="InsertTabSymbol, ChangeParagraphListLevel, ChangeParagraphLeftIndent, NavigateInTable, AppendTableRow" />
    </telerik:RadRichTextBox.InputBindings>

You can check the Simulate Watermark SDK example which demonstrates how you can modify the InputBindings collection of RadRichTextBox in code-behind.

Sometimes overriding the key bindings does not provide sufficient support, as depending on the language and the keyboard, different ModifierKeys are registered. For example, pressing RightAlt causes Control and Alt to be sent as arguments to the PreviewKeyDown event. Thus, RightAlt+E triggers a formatting command for paragraph alignment instead of inputting the ę character. In that case, you can handle the PreviewEditorKeyDown event in the following way:

Example 6: Customizing the behavior of a keyboard combination

C#

	  this.radRichTextBox.PreviewEditorKeyDown += (sender, args) =>
         {
             if (Keyboard.Modifiers.HasFlag(ModifierKeys.Alt) && Keyboard.Modifiers.HasFlag(ModifierKeys.Control) && args.Key == Key.E)
             {
                 args.SuppressDefaultAction = true;
                 args.OriginalArgs.Handled = true;
                 this.radRichTextBox.Insert("€");
             }
         };

See Also

In this article
See Also
Not finding the help you need?
Contact Support