Support for the Windows toolkit is an important part of the UWP development experience, as it provides a some missing controls and helpers from the UWP base API, such as the WrapPanel, Headered TextBlock, DockPanel, etc…
We’re providing an experimental Nuget package named Uno.WindowsCommunityToolkit, to allow for developers to use the same controls on all platforms.
In the same direction we took for the other libraries (MVVMLight, ReactiveUI, WindowsStateTriggers, Prism, …) the Uno-compatible packages are forks of the original repositories, in order to demonstrate the viability of Uno as a target for those libraries. Ultimately, the Uno Platform developers will make pull requests back to the original repositories, once it makes sense for the original maintainers and that the sources will no longer need significant structural changes.
Building support for the Windows Community Toolkit for Uno
To add initial support for the Windows Community Toolkit, some new features had to be added to the Uno Platform code base, such as suppport for
x:Bind, support for code-behind events in
DataTemplate, and other small updates to have a first list of available controls.
WCT being a showcase for all Windows features, the initial list of controls available in the sample application only contains the non-commented out samples that the Uno Platform supports in the current release. This list will grow over time, as more UWP APIs get implemented out of their stubs.
As the Uno Platform provides all APIs UWP definitions, almost all of the code is building without modifications, with the exception of the Win2D and Gaze related code. Those are windows native dependencies, and are currently not available for non-Windows targets.
Some notable parts of the toolkit are not working at the moment:
- Windows Composition APIs samples, for which the Uno Platform only has very limited support on iOS only.
- Service based samples, such as OneDrive, LinkedIn or Microsoft Graph.
While the latter are built, in some cases the microsoft-provided nuget packages cannot function properly with the Uno Platform yet, and there may be some additional updates to do (such as the embedded login features).
If you need a particular control or service for your application to work the Uno Platform, don’t hesitate to create an issue and have it upvoted for it to be prioritized by the Uno Platform team.