CConner100.RichEditBoxLite 0.1.0

dotnet add package CConner100.RichEditBoxLite --version 0.1.0
                    
NuGet\Install-Package CConner100.RichEditBoxLite -Version 0.1.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="CConner100.RichEditBoxLite" Version="0.1.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="CConner100.RichEditBoxLite" Version="0.1.0" />
                    
Directory.Packages.props
<PackageReference Include="CConner100.RichEditBoxLite" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add CConner100.RichEditBoxLite --version 0.1.0
                    
#r "nuget: CConner100.RichEditBoxLite, 0.1.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package CConner100.RichEditBoxLite@0.1.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=CConner100.RichEditBoxLite&version=0.1.0
                    
Install as a Cake Addin
#tool nuget:?package=CConner100.RichEditBoxLite&version=0.1.0
                    
Install as a Cake Tool

RichEditBoxLite

NuGet

RichEditBoxLite is an experimental WinUI-shaped rich-text editor for Uno Platform's Skia renderer. It targets Desktop, WebAssembly, Android, and iOS and does not target WinAppSDK or Uno native rendering.

Install the current package:

dotnet add package CConner100.RichEditBoxLite --version 0.1.0
xmlns:rte="using:CConner100.RichEditBoxLite"

<rte:RichEditBoxLite
    Header="Notes"
    TextChanged="Editor_TextChanged" />

The public CLR and package namespace is CConner100.RichEditBoxLite.

What is implemented

  • A Skia SKCanvasElement renderer with formatted runs, selection, caret, wrapping, spellcheck marks, and range geometry.
  • A transparent Uno TextBox input bridge for platform keyboard, dead-key, IME, selection, clipboard, and virtual-keyboard integration.
  • UTF-16 public positions with document/range/selection operations, find, case changes, undo/redo, grouped edits, character formatting, paragraph formatting, and inline-object projection (U+FFFC).
  • Bounded RTF import and canonical export for text, Unicode, font size, bold/italic/underline/strike, colors, highlight, subscript, superscript, paragraphs, and tabs.
  • Built-in lightweight English (en-US) and Spanish (es-ES) proofing with suggestions, ignored words, and custom words.
  • A Fluent-styled control template with WinUI-compatible part/state intent, dependency properties, custom event arguments, and a value automation peer.
  • A seven-section Test UI with stable automation IDs plus document, malformed input, RTF round-trip, API-inventory, and spellcheck tests.

Compatibility status

This is a usable foundation, not a claim of complete WinUI RichEdit parity. The public surface is deliberately WinUI-shaped, but a few types must come from CConner100.RichEditBoxLite because Uno's WinUI event-argument and text-object constructors are internal.

Area v0.1 status
Plain text, caret, selection, keyboard input Implemented through Uno input bridge
Character formats Implemented for core format run properties
Paragraph alignment/indent/list metadata Stored; alignment/list painting remains partial
RTF core profile Implemented and bounded; normalized import
Undo/redo and grouped edits Implemented
Find, movement, case conversion Implemented; movement is character-based except unit expansion
Spellcheck en-US/es-ES Implemented with bundled compact dictionaries
Hyperlinks Link metadata surface exists; activation UI is not implemented
Images Inline placeholder projection exists; binary PNG/JPEG persistence/painting is not implemented
Imported tables Normalized editable text; structural table API is intentionally absent
HTML clipboard import Not implemented
Touch selection handles Delegated to the Uno TextBox bridge; host support varies
IME/dead keys/virtual keyboard Delegated to Uno; requires target-device validation
Accessibility Value automation pattern implemented; full text patterns depend on Uno runtime support
RTL Properties retained; renderer is left-to-right
MathML, handwriting, OLE, advanced Word destinations Unsupported
Candidate-window placement Property retained; host placement may ignore it
Pagination-only paragraph behavior Metadata only; continuous layout

See docs/compatibility.md for the detailed native-Skia feasibility assessment and PublicAPI.Shipped.txt for the approved compatibility inventory.

Build and run

Requires .NET 10 and Uno Platform workloads.

dotnet build RichEditBoxLite.TestApp/RichEditBoxLite.TestApp.csproj -f net10.0-desktop
dotnet run --project RichEditBoxLite.TestApp/RichEditBoxLite.TestApp.csproj -f net10.0-desktop
dotnet test RichEditBoxLite.TestApp.Tests/RichEditBoxLite.TestApp.Tests.csproj
dotnet pack src/CConner100.RichEditBoxLite/CConner100.RichEditBoxLite.csproj -c Release

Target frameworks:

  • net10.0-desktop
  • net10.0-browserwasm
  • net10.0-android
  • net10.0-ios

The Test UI navigation covers Playground, Formatting and Document API, RTF and Rich Content, Input/Clipboard/Spellcheck, Properties and Visual States, Event Monitor, and Accessibility/Stress.

Security profile

RTF input is capped at 16 MiB and 256 nested groups. Remote images are never loaded. Unsupported binary/object/math destinations are discarded during normalized import. Malformed unbalanced input is rejected.

License

MIT. See LICENSE and THIRD-PARTY-NOTICES.md.

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-android36.0 is compatible.  net10.0-browser was computed.  net10.0-browserwasm1.0 is compatible.  net10.0-desktop1.0 is compatible.  net10.0-ios was computed.  net10.0-ios26.0 is compatible.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.1.0 50 7/27/2026