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
<PackageReference Include="LeXtudio.UnoPropertyGrid" Version="0.4.0" />
<PackageVersion Include="LeXtudio.UnoPropertyGrid" Version="0.4.0" />
<PackageReference Include="LeXtudio.UnoPropertyGrid" />
paket add LeXtudio.UnoPropertyGrid --version 0.4.0
#r "nuget: LeXtudio.UnoPropertyGrid, 0.4.0"
#:package LeXtudio.UnoPropertyGrid@0.4.0
#addin nuget:?package=LeXtudio.UnoPropertyGrid&version=0.4.0
#tool nuget:?package=LeXtudio.UnoPropertyGrid&version=0.4.0
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

<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:
The core property grid component.
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
Copyright (c) 2026 LeXtudio, Inc. All rights reserved.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0-desktop1.0 is compatible. net10.0-windows10.0.19041 is compatible. |
-
net10.0-desktop1.0
- CommunityToolkit.WinUI.Controls.Sizers (>= 8.2.251219)
- LeXtudio.TextBox (>= 0.2.13)
- SkiaSharp.Views.Uno.WinUI (>= 3.119.1)
- Uno.WinUI (>= 6.5.153)
- Uno.WinUI.Graphics2DSK (>= 6.5.153)
- Uno.WinUI.Lottie (>= 6.5.153)
-
net10.0-windows10.0.19041
- CommunityToolkit.WinUI.Controls.Sizers (>= 8.2.251219)
- LeXtudio.TextBox (>= 0.2.13)
- Microsoft.Windows.SDK.BuildTools (>= 10.0.26100.7463)
- Microsoft.WindowsAppSDK (>= 1.8.260317003)
- Uno.WinUI (>= 6.5.153)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.