What's New in UraniumUI v3.0

UraniumUI v3.0 is the .NET 10 generation of UraniumUI. It updates the framework baseline, introduces new MAUI-rendered controls, improves form validation workflows, and fixes several high-impact issues across data, dialogs, inputs, buttons, and platform effects.

If you are upgrading an existing app, read the Migration Guide to v3.0 before updating packages.

Highlights

  • .NET 10 and .NET MAUI 10 support.
  • New CalendarView control.
  • New date prompt dialog API and CalendarView-backed DatePickerField.
  • New Select and Material SelectField controls.
  • New async validation support in FormView.
  • Virtualized TreeView for larger data sets.
  • DataGrid improvements for headers and auto-generated columns.
  • Important bug fixes for Android Release builds, compiled bindings, dialogs, form validation, binding contexts, buttons, and blur effects.

Platform and package baseline

UraniumUI v3 targets .NET 10 only. .NET 9 support remains available in UraniumUI v2.16.0.

The v3 branch uses:

  • .NET MAUI 10.0.71
  • InputKit.Maui 4.6.0
  • Plainer.Maui 1.8.0
  • CommunityToolkit.Maui 13.0.0 for UraniumUI.Dialogs.CommunityToolkit

Related PRs:

CalendarView

v3 adds uranium:CalendarView, a cross-platform MAUI-rendered calendar control.

CalendarView supports nullable selection, minimum and maximum dates, culture-aware week layout, month navigation, year selection, and style classes for calendar parts.

<uranium:CalendarView
    SelectedDate="{Binding SelectedDate}"
    MinimumDate="{Binding MinimumDate}"
    MaximumDate="{Binding MaximumDate}" />

Learn more in the CalendarView documentation.

Related PRs:

Date prompts and DatePickerField

Dialogs now include a date prompt API through IDialogService.DisplayDatePromptAsync(...). The built-in default, Mopups, and CommunityToolkit dialog providers support it.

var selectedDate = await dialogService.DisplayDatePromptAsync(
    title: "Select a date",
    selectedDate: DateTime.Today);

material:DatePickerField now uses this date prompt and CalendarView instead of relying on the native picker interaction. It also supports empty values by making Date, MinimumDate, and MaximumDate nullable.

public DateTime? BirthDate { get; set; }

Learn more in the dialogs documentation and DatePickerField documentation.

Related PRs:

Select and SelectField

v3 introduces a MAUI-rendered uranium:Select control and a Material material:SelectField wrapper.

The new select controls provide overlay-based single selection, templated items, templated selected values, keyboard interaction, and a Material input-field experience without depending on native picker behavior.

<material:SelectField
    Title="Country"
    ItemsSource="{Binding Countries}"
    SelectedItem="{Binding SelectedCountry}" />

Learn more in the Select documentation and SelectField documentation.

Related PR:

Async FormView validation

v3 adds UraniumUI.Controls.FormView, which extends the InputKit form workflow with async validation support.

New validation APIs include:

  • SubmitAsync(...)
  • ValidateFormAsync(...)
  • IFormValidator
  • FormValidationHandler
  • ValidationModel
  • ShowValidationSummary
  • IsBusy and IsValidating
  • attached FormView.ValidationPath
  • attached FormView.IsBusyIndicator

This makes server-side validation and other async validation workflows easier to integrate with generated forms and dialogs.

if (await formView.SubmitAsync())
{
    // Continue after successful validation.
}

AutoFormView participates in the new validation flow automatically by assigning validation paths to generated editors.

Learn more in the Material validation documentation.

Related PRs:

TreeView virtualization

material:TreeView was reworked to use a flat, virtualized CollectionView internally. This improves large tree performance and avoids the cost of recursively creating a deep visual tree.

The TreeView also now exposes selection change events and commands for single and multiple selection scenarios.

<material:TreeView
    ItemsSource="{Binding Nodes}"
    SelectedItem="{Binding SelectedNode}"
    SelectedItemChangedCommand="{Binding SelectedNodeChangedCommand}" />

Learn more in the TreeView documentation.

Related PRs:

DataGrid improvements

DataGrid receives two useful improvements in v3.

You can hide column headers with ShowHeaders:

<material:DataGrid
    ItemsSource="{Binding Items}"
    ShowHeaders="False" />

You can also exclude properties from auto-generated columns with [DataGridIgnore]:

public class Person
{
    public string Name { get; set; }

    [DataGridIgnore]
    public string InternalNote { get; set; }
}

Learn more in the DataGrid documentation.

Related PRs:

Input and dialog refinements

v3 also improves smaller but important input and dialog experiences:

  • MultiplePickerField adds chip and checkbox styling options.
  • TextField adds an IsSpellCheckEnabled toggle.
  • InputField supports formatted floating titles through TitleFormattedText.
  • Custom view dialogs can now be cancellable with a Task<bool> result.
  • Input clear icons better follow theme changes and initial values.

Related PRs:

Important fixes

v3 includes several fixes that should be noticeable in production apps.

DataGrid Android Release crash

A DataGrid crash that appeared in Android Release builds was fixed.

Related PR:

DataAnnotations and compiled bindings

DataAnnotationsBehavior now works better with compiled and typed bindings, including nested paths, and avoids duplicate validation messages from previously applied validations.

Related PR:

Form dialogs validate before closing

Built-in form dialogs now wait for form validation before closing. Invalid forms stay open so the user can correct validation errors.

Related PRs:

Binding and visual-state fixes

Several binding and visual-state issues were fixed:

  • DropdownField.SelectedItem is now TwoWay by default.
  • TabView cached content now gets the expected binding context.
  • EditorField preserves text color across theme changes.
  • ButtonView no longer keeps stale pressed state after navigation.
  • Transparent ButtonView backgrounds are preserved on press.

Related PRs:

Dialog and blur stability

The default dialog close flow, CommunityToolkit dialog rendering, and blur platform effects were stabilized.

Related PRs:

Upgrade notes

v3 includes breaking changes for apps that depend on older target frameworks or custom implementations of UraniumUI extension points.

Before upgrading, review the Migration Guide to v3.0, especially if your app uses:

  • .NET 9 target frameworks.
  • DatePickerField bindings to non-nullable DateTime properties.
  • a custom IDialogService implementation.
  • a custom IDropdown implementation.
  • TreeView internals such as TreeViewNodeHolderView or AllNodeViews.
  • custom form dialog code that closes immediately after calling Submit().

Related milestone

You can view the full v3.0 milestone PR list on GitHub:

In this document