The presentation framework for .NET MAUI.
Fill the UI gaps in plain MAUI without adopting a second app model, proprietary layer, or special coding style.
Documentation | NuGet | Templates | Discord
UraniumUI is a free and open-source presentation framework for .NET MAUI. It fills the UI gaps plain MAUI leaves to every team: polished controls, validation-aware forms, dialogs, icons, and app-ready presentation patterns without moving your app into a proprietary black box.
You keep writing regular .NET MAUI: XAML, ContentPage, bindings, styles, resources, handlers, dependency injection, MVVM, and platform APIs. UraniumUI attaches to that model instead of replacing it.
It is not just a collection of styled controls. UraniumUI provides the building blocks for real app screens: generated forms, validation mapping, dialog abstractions, theme resources, icon packs, state-aware views, layout primitives, and extensibility points for your own controls.
Some UI stacks ask you to move your app into their way of building software. UraniumUI does not.
There is no required base ViewModel, proprietary navigation model, custom application layer, generated project structure, or new UI DSL. Adopt one control, a validation-aware field set, or a full Material presentation layer. Your app remains a MAUI app.
Plain MAUI in, better UI out.
.NET MAUI gives you the platform foundation. UraniumUI adds the presentation architecture that most production apps end up rebuilding.
| App need | UraniumUI provides |
|---|---|
| Build forms quickly | AutoFormView generates editors from your model and lets you override editor mappings when needed. |
| Validate forms consistently | InputKit validation, DataAnnotations integration, async validation, and automatic validation path mapping for generated fields. |
| Keep UI native and flexible | Controls and handlers built on MAUI primitives instead of a closed, all-or-nothing rendering stack. |
| Standardize app presentation | Material theme, color resources, style resources, cascading styling, icons, dialogs, and reusable page infrastructure. |
| Escape the defaults | Replace generated editors, customize layouts, add page attachments, create themes, or use native MAUI APIs directly. |
Install the templates and create a ready-to-run UraniumUI project:
dotnet new install UraniumUI.Templates
dotnet new uraniumui-app -n MyMauiAppFor a lighter starter project:
dotnet new uraniumui-blank-app -n MyMauiAppYou can also generate a UraniumContentPage item:
dotnet new uraniumcontentpage -n CustomerPage -na MyMauiAppTemplates can configure icon packages, dialog integration, and blur support during project creation.
Install the Material package. It references the core UraniumUI package and configures Material controls and AutoFormView editor mappings.
dotnet add package UraniumUI.MaterialRegister UraniumUI in MauiProgram.cs:
using UraniumUI;
builder
.UseMauiApp<App>()
.UseUraniumUI()
.UseUraniumUIMaterial();Add Material resources in App.xaml:
<Application xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:material="http://schemas.enisn-projects.io/dotnet/maui/uraniumui/material"
x:Class="MyMauiApp.App">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary x:Name="appColors" Source="Resources/Styles/Colors.xaml" />
<ResourceDictionary x:Name="appStyles" Source="Resources/Styles/Styles.xaml" />
<material:StyleResource ColorsOverride="{x:Reference appColors}" BasedOn="{x:Reference appStyles}" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
</Application>Read the full onboarding guide: Getting Started.
Instead of hand-writing every field, binding, validation message, and layout row, describe the form with your model and let UraniumUI generate the editable UI.
using System.ComponentModel.DataAnnotations;
public class RegisterViewModel
{
[Required]
[EmailAddress]
public string Email { get; set; } = string.Empty;
[Required]
public string FullName { get; set; } = string.Empty;
[Range(1, 10)]
public int NumberOfSeats { get; set; }
[Display(Name = "I accept the terms and conditions")]
public bool AcceptedTerms { get; set; }
}<uranium:AutoFormView Source="{Binding .}" />Enable DataAnnotations validation once:
dotnet add package UraniumUI.Validations.DataAnnotationsusing UraniumUI.Options;
using UraniumUI.Validations;
builder.Services.Configure<AutoFormViewOptions>(options =>
{
options.ValidationFactory = DataAnnotationValidation.CreateValidations;
});The same model can now drive generated editors, display names, and validation messages. If a screen needs custom behavior, override the editor mapping, change the generated layout, or replace a generated field with your own MAUI view.
Learn more: AutoFormView and DataAnnotations validation.
| Area | What you get | Docs |
|---|---|---|
| Dynamic forms | Model-driven forms, generated editors, custom editor mapping, property name mapping, layout customization, form dialogs. | AutoFormView |
| Validation | InputKit validation, DataAnnotations package, async form validation, generated-field validation path mapping. | Validations |
| Material presentation | Text fields, picker fields, buttons, chips, checkboxes, radio buttons, containers, elevation, DataGrid, TreeView, TabView, BottomSheet, Backdrop. | Material Theme |
| Dialogs | IDialogService, default modal-page dialogs, Mopups integration, CommunityToolkit integration, prompt, confirmation, progress, custom view, and form dialogs. |
Dialogs |
| Page architecture | UraniumContentPage, page attachments, StatefulContentView, DynamicContentView, GridLayout, ExpanderView, Dropdown, CalendarView. |
Core |
| Theming | Color system, style resources, cascading styling, custom themes, icon packs, light and dark mode support. | Color System |
| Effects and web components | Blur effects and WebView-based code rendering. | Blurs, CodeView |
| Package | Purpose |
|---|---|
UraniumUI |
Core controls, handlers, dialogs, layouts, AutoFormView, and extensibility infrastructure. |
UraniumUI.Material |
Material presentation layer and Material editor mappings for generated forms. |
UraniumUI.Validations.DataAnnotations |
DataAnnotations integration for forms and generated editors. |
UraniumUI.Dialogs.Mopups |
Dialog implementation backed by Mopups. |
UraniumUI.Dialogs.CommunityToolkit |
Dialog implementation backed by .NET MAUI Community Toolkit. |
UraniumUI.Icons.MaterialSymbols |
Material Symbols icon fonts and glyph helpers. |
UraniumUI.Icons.FontAwesome |
Font Awesome icon fonts and glyph helpers. |
UraniumUI.Icons.SegoeFluent |
Segoe Fluent icon fonts and glyph helpers. |
UraniumUI.Blurs |
Cross-platform blur effects. |
UraniumUI.WebComponents |
WebView-based components such as CodeView. |
UraniumUI.Templates |
Project and item templates for new UraniumUI apps and pages. |
| Target | Support |
|---|---|
| Current versions | .NET 10 LTS and .NET 9 |
| .NET 8 | Use UraniumUI v2.6 through v2.12 |
| .NET 6 and .NET 7 | Use UraniumUI v2.5 |
Supported MAUI platforms:
- Android
- iOS
- Mac Catalyst
- Windows
- Tizen, with limited support and optional setup
We welcome contributions and suggestions. Please read the contributing guide.
You may consider checking out issues with the good first issue label to make your first contribution.
See the milestones section in the repository.
This project is licensed under the Apache License. See the LICENSE file for details.
| Special thanks to project supporters 🎉 |
|---|
| YvanBrunel |
| Hottemax |
| tjlangenkamp |
| C00lzer0 |
| Eric |
| Volker Busch |
| gpproton |
| kmaclagan-pcl |
| @Geramy |
| Malko_Josue |
| Nawa |
| JohnStabler |
| jfversluis |
| Lucasbk123 |
| laszlodaniel |
| codychaplin |
| Juliette Dianne Moss |
| Simon Brettschneider |
| JohnCKoenig |
| 7 M O X D |
| Anonymous people 6☕️ |
Donations are spent on infrastructure costs such as the documentation website.
If UraniumUI helps you ship .NET MAUI apps, you can support the project on BuyMeACoffee.
