Spell checking

    Spell checking helps users find and correct misspelled words in the documents they edit. Inline checking flags words as they type, while the spell-check dialog lets them review the document one word at a time. Use SpellCheckOptions to choose the dictionary and checking behavior.

    <Window xmlns:editor="clr-namespace:SpiceLogic.HtmlEditor.WPF;assembly=SpiceLogic.HtmlEditor.WPF">
        <editor:WpfHtmlEditor x:Name="NoteEditor" />
    </Window>

    Two ways to check, and they coexist

    The control supports two checking modes simultaneously: inline squiggles under misspelled words as the user types, and a dialog walker (launched from the toolbar) that steps through every flagged word one at a time, similar to Microsoft Word. Both are configured through the SpellCheckOptions property:

    NoteEditor.SpellCheckOptions.FireInlineSpellCheckingOnKeyStroke = true;
    NoteEditor.SpellCheckOptions.InlineSpellCheckDebounceMilliseconds = 300;
    NoteEditor.SpellCheckOptions.FireInlineSpellCheckingOnKeyStroke = True
    NoteEditor.SpellCheckOptions.InlineSpellCheckDebounceMilliseconds = 300

    InlineSpellCheckDebounceMilliseconds coalesces a burst of typing (such as a pasted, thousand-line block of text) into a single check instead of re-scanning on every keystroke. The default 300 ms window keeps the editor responsive even on lower-powered devices.

    The WPF HTML editor inside a desktop application, with misspelled words underlined in red as the user types
    The WPF HTML editor inside a desktop application, with misspelled words underlined in red as the user types

    Using a different dictionary language

    To spell-check in a language other than US English, supply an OpenOffice-format .dic/.aff dictionary pair and point the editor at the files:

    NoteEditor.SpellCheckOptions.DictionaryFile.DictionaryFilePath = @"Dictionaries\de_DE.dic";
    NoteEditor.SpellCheckOptions.DictionaryFile.AffixFilePath      = @"Dictionaries\de_DE.aff";
    NoteEditor.SpellCheckOptions.SpellCheckLanguage = SpellCheckLanguage.German;
    NoteEditor.SpellCheckOptions.DictionaryFile.DictionaryFilePath = "Dictionaries\de_DE.dic"
    NoteEditor.SpellCheckOptions.DictionaryFile.AffixFilePath      = "Dictionaries\de_DE.aff"
    NoteEditor.SpellCheckOptions.SpellCheckLanguage = SpellCheckLanguage.German

    SpellCheckLanguage defaults to SameAsEditorLanguage. Set or bind the editor's Language property to select a bundled dictionary with the UI language, or configure the spell-check option separately. Custom dictionary files must be supplied as a matching .dic and .aff pair.

    Handling product names and other custom terms

    Words that are not in any dictionary, such as product or brand names, will be squiggled by default. Enable the user dictionary so users can right-click a flagged word and choose Add to Dictionary to stop it being flagged again. See the User Dictionary page for the full walkthrough.

    The WPF HTML editor's spell-check dialog reviewing the misspelled word occurence in a site report, with the sentence above it, the engine's suggestion list, and the Ignore, Ignore All, Add to dictionary, Delete, Replace and Replace All buttons
    The WPF HTML editor's spell-check dialog reviewing the misspelled word occurence in a site report, with the sentence above it, the engine's suggestion list, and the Ignore, Ignore All, Add to dictionary, Delete, Replace and Replace All buttons

    Using an external spell-check service

    When spelling must be validated against an external source, such as an internal terminology or compliance service, instead of a local dictionary file, implement ISpellCheckerEngine and assign it to the editor. Every spell check call, inline squiggles, dialog suggestions, and Add-to-Dictionary, then routes through that engine. See Using a Custom Spell-Check Engine.

    Detecting when a check has completed

    The spell-check dialog closes automatically when the review finishes, without a separate completion popup. A document with no spelling errors completes without opening a dialog. Subscribe to SpellCheckCompleted to know when a spell-check pass finishes, for example to update a non-modal status message. The event fires for both interactive and inline checks. Canceled is true for a canceled review:

    NoteEditor.SpellCheckCompleted += (sender, e) =>
    {
        statusLabel.Text = e.Canceled
            ? "Spell check canceled."
            : "Spell check complete.";
    };
    AddHandler NoteEditor.SpellCheckCompleted,
        Sub(sender, e)
            statusLabel.Text = If(e.Canceled, "Spell check canceled.", "Spell check complete.")
        End Sub

    The following pages in this section cover the deeper API surface for each of these topics.

    Ask your AI to do this

    Connect the SpiceLogic MCP server, then give your coding assistant this prompt.

    I use the SpiceLogic WPF HTML Editor. Help me configure the supported spell-check options for my application. Confirm the exact API names, types and defaults with the SpiceLogic MCP documentation, then show the changes for my project.

    Last updated on Oct 9, 2026

    Put this into practice.

    Clone the C# and VB.NET sample projects from GitHub. Start with Quickstart, then explore the feature samples.

    Prefer a guided look? Book a free live demo with our engineers - live on Zoom or Teams, never a chatbot.