Uno Platform 3.4 – Maturing the supported control set

In early parts of 2020 we had released support for many new platforms – macOS, Linux, Skia and flirted with Tizen. In the second half of the year, as WinUI matured more, we focused on providing day-0 support for WinUI releases. Starting from today’s 3.4 release and in the period ahead when WinUI is expected to RTM, we will be putting an even bigger focus on maturing Uno Platform by providing a growing set of controls and mappings to existing WinUI and 3rd party components.

 

The eighth release of this year is dedicated to supporting more WinUI controls, such as the Hierarchical NavigationView, InfoBar, RadioButtons, ItemsRepeater and determinate ProgressRing. We are following the footsteps of the WinUI team to align more of the controls Uno provides with what is supported on Windows.

The combination of controls we are releasing with 3.4 release, the recently-announced Infragistics controls for Uno Platform, and Syncfusion charting, will give you as a developer a great toolset to tackle single-source web, desktop and mobile applications.

In addition we also significantly expanded the number of features in existing Uno controls and fixed dozens bugs with the help of Uno open-source community (Thanks Jeremy!).

Hierarchical NavigationView support

Uno Platform has been including a version of the Navigation for quite a while in the Windows.UI.Xaml namespace. Recently, the WinUI team added support for an enhanced experience including hierarchical navigation, with the ability to expand and collapse menu items.

This new control is now available in the Microsoft.UI.Xaml namespace in Uno, to match with the Windows version of WinUI. The Windows.UI.Xaml version of the control will remain available in Uno, but will not include additional features, only bug fixes as needed.

The Uno Platform promise is reuse – be it skillset, code or documentation. As this control is a straight forward port of the original WinUI control, the documentation is the very same NavigationView documentation provided by Microsoft.  Use NavigationView in your Windows project and it will automatically work on all Uno-supported platforms on web, mobile and desktop.

Support for the WinUI 2.5 InfoBar control

The WinUI InfoBar control also has been imported in Uno Platform. It allows for applications to display app wide status messages to the users to be highly visible but non-intrusive, using customizable severity levels.

Here is an example of InfoBar visual:

Uno Platform promise is reuse – be it skillset, code or documentation. As this control is a straight forward port of the original WinUI control, the documentation is the very same as official  documentation for the InfoBar on Microsoft docs.

Support for WinUI RadioButtons

Yet another WinUI control, this time to allow the data binding of an items source to a list of radio buttons. This control lets users select one option from a collection of two or more mutually exclusive, but related, options.

 

You can browse the documentation for the RadioButtons on Microsoft docs.

Support for ItemsRepeater

The ItemsRepeater is a new control from WinUI 2.x that provides an enhanced developer experience and end user experience when creating custom collection experiences using a flexible layout system, custom views, and virtualization.

We have ported the code from the ItemsRepeater to Uno, and it is useable on all our available platforms. It is used in Uno by the refreshed hierarchical NavigationView control, as well as the RadioButtons control.

Layouts are reusable components for which some (StaggeredLayout, WrapLayout) were released in Windows Community 6.1. Uno did not have support the ItemsRepeater at the time, but those will be available soon to be reused in Uno.

Uno Platform promise is reuse – be it skillset, code or documentation. You can browse the documentation for the ItemsRepeater on Microsoft docs. Use ItemsRepeater in your Windows project and it will automatically work on all Uno-supported platforms on web, mobile and desktop.

As we released a preview of ItemsRepeater, a testimonial came from one Uno user:

“ItemsRepeater and especially VirtualizingLayout enable for us very important scenarios for creating compelling user interfaces. With Uno support, we got the motivation to migrate ItemsControl to the more performant ItemsRepeater. It is a new experience and at a (perceived) WPF performance level – thank you!”

 

We love hearing those stories – let us know on twitter or our team alias if your team is benefiting from Uno.

Determinate ProgressRing

WinUI 2.5 added support for a determinate mode for the progress ring, allowing for an arbitrary progress value to be provided. This control uses Lottie under the hood, and benefits from additional changes we included to get color changes in Lottie files.

You can browse the documentation for the ProgressRing control on Microsoft docs.

Upgrading from previous versions of Uno

There are no breaking changes for this release of Uno, but you’ll need to upgrade the Uno.Core package to 2.1 in the UWP project to avoid nuget restore warnings.

This upgrade has been introduced to improve the compatibility of Uno.UI with Visual Studio 2019 16.9 Preview releases.

Other significant updates

  • Skia templates use .NET 5 by default
  • Support for FlyoutPlacementModes
  • Drag and Drop support for ListView (WebAssembly and Skia)
  • Support for FrameworkElement.EffectiveViewportChanged event
  • Support for Frame.SourcePageType and Frame.CurrentSourcePageType
  • Improved ImageBrush support (WebAssembly)
  • Support for synchronized ItemsControl.Items with ItemSource
  • Custom colors support for Lottie files and MUX ProgressRing
  • Support for SvgImageSource (WebAssembly)
  • Support for FileSavePicker on macOS (Thanks Jeremy!)
  • TabView for iOS/Android/macOS
  • Memory and execution performance improvements.

Head over to our GitHub release notes for the full list of changes in 3.4 release.

Next Steps

To upgrade to latest release of Uno Platform please update your packages to 3.4 via your Visual Studio NuGet package manager! If you are new to Uno Platform, the best way to get started is following our official getting started guide. Or, if you are new to Uno Platform, please follow this 2 minute tutorial.

Jerome Laban, CTO, Uno Platform

Share this post: