The Prism Library was initially created by Microsoft’s Patterns and Practices team in 2008 and had grown into a mature set of guidance that allows developers to use proven patterns and development practices to create XAML based applications. In 2015, as Microsoft forged more into the world of open source, the Prism library was taken over by community champions and has been evolved since. Currently the initiative is led by Brian Lagunas and Dan Siegel, both Microsoft MVPs.
Fast forward to 2020
One of the most requested improvements to Prism has been support for UWP (and future WinUI) with hundreds of conversations on the topic were had on twitter, email and forums. However, this was a behemoth task for the sole two main maintainers of the library. As Uno Platform has been championing UWP/WinUI on a mission to take WinUI cross-platform to iOS, Android, WebAssembly and macOS, our team stepped up to the plate and created the initial support. Uno Team is committed to providing ongoing support to the library.
A bit about implementation
With this contribution, the Prism supported XAML frameworks grow from supporting WPF and Xamarin.Forms to also include UWP/WinUI and Uno Platform. WPF and WinUI are very similar APIs that share lots of similar class names, albeit being in different namespaces. The bulk of the change is about retargeting WPF-specific sources over to UWP, while providing a very similar feature set. The rest of the changes are end-to-end testing applications using Uno.UI Test to validate iOS, Android and WebAssembly behavior during community Pull Requests.
While the contribution itself involved changes to over 140 files and 5600 line changes, the architectural approach taken made it a lot easier than what the relative size of the code contribution is. In addition, an amazing work by Brian and Dan on restructuring the repo to prep the Prism repo to accept a contribution of this size made all this possible.
We hope you will take advantage of Prism in your future Uno and WinUI built apps.
To create an application easily, install the dotnet new preview templates for the Uno Platform:
dotnet new -i Uno.ProjectTemplates.Dotnet::2.4
Then once installed, type the following:
dotnet new unoapp-prism -u MyPrismApp
This will create a solution that you can open in Visual Studio and take advantage of Prism.
About Uno Platform
For those new to Uno Platform – it enables for creation of single-source C# and XAML apps which run natively on iOS and Android, macOS and Web via WebAssembly. (or #WinUIEverywhere). Uno Platform is Open Source (Apache 2.0) and available on GitHub. To learn more about Uno Platform, see how it works, or create a small sample app.
Jerome Laban, on behalf of Uno Platform team