LeXtudio.UnoPropertyGrid 0.4.0

Prefix Reserved
dotnet add package LeXtudio.UnoPropertyGrid --version 0.4.0
                    
NuGet\Install-Package LeXtudio.UnoPropertyGrid -Version 0.4.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="LeXtudio.UnoPropertyGrid" Version="0.4.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="LeXtudio.UnoPropertyGrid" Version="0.4.0" />
                    
Directory.Packages.props
<PackageReference Include="LeXtudio.UnoPropertyGrid" />
                    
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 LeXtudio.UnoPropertyGrid --version 0.4.0
                    
#r "nuget: LeXtudio.UnoPropertyGrid, 0.4.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 LeXtudio.UnoPropertyGrid@0.4.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=LeXtudio.UnoPropertyGrid&version=0.4.0
                    
Install as a Cake Addin
#tool nuget:?package=LeXtudio.UnoPropertyGrid&version=0.4.0
                    
Install as a Cake Tool

UnoPropertyGrid

UnoPropertyGrid is a desktop-first property grid for Uno Platform and WinUI 3.

Current scope:

  • Target Uno Skia Desktop (WinUI 3 port is included but not the primary focus).
  • Do not target mobile during the bootstrap phase (v0.x.x).

Screenshot & Video

UnoPropertyGrid on macOS

<video controls width="720" src="images/property-grid.mp4"> Your browser does not support the video tag. Download the video: property-grid.mp4 </video>

Supported Platforms

  • Windows 11 (Windows 10 may work but is not a primary target)
  • macOS, 3 most recent versions from 2023-2025
  • Ubuntu latest LTS (other Linux distributions may work but are not primary targets)

If you are looking for support of a specific platform, business sponsorship is the way to accelerate that work. Please reach out to us at homepage.

Get Started

Two NuGet packages are available:

  • NuGet The core property grid component.
  • NuGet Optional Roslyn source generator for AOT-safe property discovery (see AOT support below).

Default usage (reflection-based)

xmlns:pg="using:UnoPropertyGrid"

<pg:PropertyGridControl SelectedObject="{x:Bind MyObject}" />

The property grid discovers properties automatically via TypeDescriptor and reflection. No extra setup is required for desktop targets.

Study the sample project to see custom editors and design-time metadata in action.

There are several built-in editors for common types (string, numeric types, bool, enum, etc.) and you can also create custom editors for your own types.

AOT support

For NativeAOT, trimmed Blazor WebAssembly, or any target where the trimmer removes unreferenced metadata, add the companion source generator:

dotnet add package LeXtudio.UnoPropertyGrid
dotnet add package LeXtudio.UnoPropertyGrid.Generator

Annotate each type you want to inspect at the assembly level (typically in the same file that declares the type, or in a dedicated AssemblyInfo.cs):

[assembly: UnoPropertyGrid.GeneratePropertyGridDescriptors(typeof(MyApp.DeviceSettings))]
[assembly: UnoPropertyGrid.GeneratePropertyGridDescriptors(typeof(MyApp.NetworkConfig))]

Then swap the default provider before assigning SelectedObject:

// GeneratedPropertyGridDescriptors is emitted by the source generator at compile time.
PropertyGrid.PropertyProvider = GeneratedPropertyGridDescriptors.CreateProvider();
PropertyGrid.SelectedObject = myDeviceSettings;

The generator reads [Category], [Description], [DisplayName], [ReadOnly], and [Browsable] attributes at compile time and emits typed lambda accessors — no PropertyInfo.GetValue or TypeDescriptor is involved in property discovery at runtime.

Study the AOT sample project for a complete working example.

Current Status

Early preview (v0.x.y) releases are available on NuGet.

The API is not yet stable and may change without a major version bump. Feedback is welcome to help shape the future of UnoPropertyGrid.

TODO Items Before v1.0.0

  • More built-in editors (currently only a few basic types are supported)
  • Finish dark theme support (currently functional but not fully polished)
  • IME support improvements (currently functional but not fully polished)
  • Accessibility support (screen readers, keyboard navigation, etc.)

License

UnoPropertyGrid is licensed under the MIT License. See LICENSE for details.

Copyright (c) 2026 LeXtudio, Inc. All rights reserved.

Product Compatible and additional computed target framework versions.
.NET net10.0-desktop1.0 is compatible.  net10.0-windows10.0.19041 is compatible. 
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.4.0 40 5/27/2026
0.3.5 92 5/25/2026
0.3.4 118 5/18/2026
0.3.3 97 5/17/2026
0.3.2 94 5/16/2026
0.3.1 102 5/12/2026
0.3.0 101 5/12/2026
0.2.0 91 5/12/2026
0.1.0 101 5/10/2026