Version History

WPF HTML Editor Control release history.

Version 3.2.0

Released Jul 3, 2026 - wpfHtmlEditor 3.2.0 fixes major WPF content/binding issues, safer paste/clipboard and Word import, spell-check crashes, table editing corruption, and file-save data loss risks.

Bug fixes

  • Binding DocumentHtml inside a WPF tab
  • Cut/delete text from a table is not possible.
  • Mouse flicker on long text with enabled spell checking
  • MS Word paste corrupted markup: final cleanup destroyed non-empty style/class attributes and corrupted tag names
  • Table Cell Properties crashed on a fractional percentage width/height (unguarded int.Parse)
  • Table Properties crashed on tables whose cell rowspan exceeded the actual row count
  • Mail-merge / paste insertion could silently replace the entire document body when pasteHTML failed
  • Cut/Delete could silently delete unselected content (e.g. an adjacent image) next to the selection
  • Polish (and other code-page) spell-check dictionaries failed to load on .NET 5+ (encoding provider unregistered)
  • Table structural edits could corrupt a different or since-modified table via a stale cached TableMap
  • Decimal CSS font sizes were misread on non-English locales (float.Parse without InvariantCulture)
  • Design/HTML round-trip corrupted documents: empty non-void elements were emitted without a closing tag
  • Formatter dropped whitespace-only text nodes, merging adjacent inline words together
  • Licensing could crash or mis-license on non-Gregorian-calendar locales (culture-sensitive DateTime.Parse of the release date)
  • MS Word paste merged all lists into one and turned numbered lists into bullets
  • MS Word paste stripped IE conditional comments (regressed the ALM #492 fix)
  • Pasting an image from MS Word deleted it (VML stripped before image conversion ran)
  • Opening a legacy ANSI/windows-1252 HTML file corrupted its text on .NET 5+ (Encoding.Default is UTF-8)
  • Zero-border table guideline pass could permanently freeze the UI thread (lock + AutoResetEvent + BackgroundWorker deadlock)
  • Reading BodyHtml before the document existed entered an unbounded message-pump loop (hang)
  • Saving to a file deleted the existing file before the new content was written (data loss on failure)
  • Hyperlink dialog: after removing one link, later OK silently unlinked instead of inserting (stale cached-dialog state)
  • Style Builder re-applied stale CSS or silently wiped styles (property dictionary never cleared between opens)
  • Style Builder silently deleted CSS values its combo boxes could not represent (display:flex, position:fixed, width:auto, etc.)
  • Caret index API injected permanent sentinel text into WPF documents and returned 0
  • WPF: GetBodyHtml returned an empty string in ReadOnlyPreview mode (content lost when the host saved)
  • WPF: setting DocumentHtml in ReadOnlyPreview mode was silently dropped
  • WPF: Table/Cell Properties dialog crashed when the table used rgb()/rgba() CSS colors
  • WPF: MS Word paste auto-detection and cleanup never ran (IsMsWordContentInClipboard hard-coded to false)
  • WPF: disabling Options.FormatHtmlSource was silently ignored (a shadowing 'new' property)
  • WPF: editors hosted without a Window (ElementHost) were never disposed; removed editors stayed rooted
  • WPF: BodyHtml/DocumentTitle set before the document existed were dropped, then the empty value written back over the bound source
  • WPF: toolbar dialogs leaked a window per open via the static LocalizationManager.LanguageChanged event
  • Email image-embedding crashed on an img without src, a short/empty src, or a malformed base64 data URI
  • Selection-sync markers could be left permanently inside the user's document on a failed mode switch
  • Cleanup TD-wrapping regex corrupted nested tables by matching a span across tag boundaries
  • Table row/column span arithmetic errors (inserted extra cells, mis-sized grid crash, wrong column position, null-cell insert)
  • Inline spell-check node cache was mutated concurrently from the background scan and UI threads with no synchronization
  • Interactive spell-check pre-scan ran a full synchronous O(N^2) document scan on the UI thread on tables
  • A relative Hunspell affix (.aff) path was not rooted against the app base directory, breaking after a CWD change
  • German/Norwegian/Polish embedded NetSpell dictionaries broke on .NET Framework: .aff/.dic parsed as hardcoded UTF-8, ignoring the SET directive
  • .NET Framework NetSpell user dictionary ignored the configured file path (read/saved under %APPDATA%\NetSpell instead)
  • Inline spell-check debounce timer could crash the process by BeginInvoke on a just-disposed control
  • .NET Framework spell-check suggestion generation raced the background scan (Suggest iterated a list the worker thread cleared)
  • Mail-merge InsertPlaceholder silently dropped the insert before the document was ready yet still fired PlaceholderInserted claiming success
  • Mail-merge placeholder emitted an unconditional trailing   that became permanent content and corrupted spacing in merged output
  • Setting BaseUrl to null crashed the editor with a NullReferenceException on the timer path
  • WPF: a family of content APIs (Get/SetBodyHtml, class name, body text, embed-images, etc.) silently no-op because the services used the WinForms-only browser.Document with no MSHTML fallback
  • Paste deleted the current selection before checking there was anything to paste
  • Set/get element-by-id APIs: NRE on null value, whole-document rewrite when the element is missing, and XPath breakage on IDs containing an apostrophe
  • Print margins corrupted on non-English locales: culture-formatted decimals written into IE's margin registry values
  • CanPaste threw when another process held the clipboard (unguarded Clipboard.ContainsImage)
  • A UTF-8 clipboard probe overwrote the user's clipboard and lost all non-text formats during paste
  • Parsing a style string with a duplicate CSS property name threw ArgumentException (duplicate declarations are legal CSS)
  • Hyperlink/element HTML builders emitted attribute values without HTML encoding, corrupting markup when a value contained a quote
  • Localization override JSON parser mangled escape sequences and mispaired keys for non-string values
  • Turkish-I bug: list toggle/unlist broke on Turkish and Azerbaijani systems because tagName.ToLower() never matched "li"
  • Insert Image dialog interpolated alt/title/src/class into the img tag with no HTML-attribute escaping - a double quote corrupted the document
  • WPF trial-panel template part was not null-guarded: a custom ControlTemplate without spTrial crashed every instance, including licensed ones
  • Editor teardown ran only on the first host window's Closed event - removed editors leaked native WebBrowser/mshtml resources and a re-parented editor was disposed while still in use
  • Ctrl+Click hyperlink navigation worked only on the last anchor in the document (a single event-proxy field detached every previously attached anchor)
  • ForceInlineSpellCheck threw NullReferenceException when called before the control template was applied
  • Table Properties dialog crashed with UriFormatException on a relative background attribute
  • Image dialog threw a raw unhandled exception when the imported file could not be verified on disk
  • Style Builder Font tab injected 'color: #000000' into every style it edited, and the Background page crashed on function-form colors
  • Case-sensitive string Replace defeated relative-path conversion, silently embedding machine-local absolute image paths
  • WPFFolderBrowserDialog.Dispose() unconditionally threw, so any 'using' of this public IDisposable crashed
  • ColorPicker ScA/ScR/ScG/ScB CLR properties were miswired and threw on any use
  • Open toolbar button had no exception handling - an unreadable file crashed the host app
  • Pasting an image with a non-writable local base-url folder crashed the host
  • Search dialog handler unsubscribed from a freshly created dialog instance instead of the one that closed (leak / stale handler)
  • Toolbar Search handler blanked PreloadedSearchText, killing the last-search-text pre-fill
  • HtmlElementClickedEventArgs.EventData was never assigned - always null for subscribers
  • Setting SpellCheckerOption.DictionaryFile = null threw NullReferenceException
  • Designer property editor wiped DocumentHtml/BodyHtml to empty string when the edit dialog threw
  • WPF debounced spell-check fire lacked the disposed guard the WinForms version has; a late fire hit a disposed spell-check service
  • Replacing the public Options object at runtime silently broke option propagation and left a stale PropertyChanged subscription
  • Typing into a misspelled (red-underlined) word lost the caret in WPF (WinForms saves/restores it)
  • WPF preview mode always showed the raw IE context menu with no way to disable it (Options.DoNotShowContextMenuInPreviewMode existed only in WinForms)