Today, we are thrilled to announce the release of “XAML for Blazor”, a new Blazor extension by Userware that brings the power of XAML to Blazor WebAssembly applications.
It combines the familiarity and capabilities of XAML with the versatility of Blazor, empowering .NET developers to create cutting-edge web applications with even greater ease and flexibility.
Addressing the Needs of the Blazor Community
Blazor is a fantastic technology by Microsoft that has revolutionized the way .NET developers build web applications. It has naturally gained popularity among .NET developers in the past few years.
However, developers accustomed to use XAML to create UIs found it challenging to adapt to the HTML/CSS and Razor-based approach for rendering pages.
We recognized this growing need in the developer community for a more unified approach. An approach that would allow developers to leverage their existing XAML skills within Blazor apps and still have the choice to use HTML/CSS/Razor.
With XAML for Blazor, we are proud to provide a solution that bridges the gap between Razor-rendered HTML pages and XAML-rendered WPF / Silverlight / UWP / WinUI pages. This enables developers to build feature-rich web applications that harness the strengths of both technologies.
Integrating XAML with Blazor: A Seamless Experience
We distribute XAML for Blazor as a NuGet package that extends Blazor WebAssembly. Please note that there is no support for Blazor Server-side yet.
Start by simply referencing the “XamlForBlazor” package from your Blazor Client-side project. You can now start using XAML files side-by-side with your Razor files, create UserControls with Code-behind, and easily reference XAML controls from your Razor files, allowing for a mix of Razor/HTML/CSS and XAML.
An optional Visual Studio extension (VSIX) is also available. It adds templates to the “Add New Item” dialog of Visual Studio, and facilitates the creation of new XAML files from within Blazor projects.
The primary supported dialect of XAML is very similar to that of WPF. It is virtually identical to that of Silverlight, and the team is adding more and more WPF-only capabilities. This dialect is also similar to that of UWP / WinUI, and developers using Xamarin Forms and .NET MAUI apps will find it familiar. Our experts can assist you to migrate legacy apps should you have any.
A Getting Started guide can be found here.
Under the Hood of “XAML for Blazor”
XAML for Blazor is powered by OpenSilver, the open-source reimplementation of Microsoft Silverlight for the modern Web.
Our experience building OpenSilver started in 2014 and we have migrated numerous large and complex Enterprise apps from Silverlight ever since. By doing so, we gained invaluable insights into rendering XAML in HTML and handling complex interoperability scenarios.
XAML for Blazor renders XAML as plain HTML in the same DOM as Razor, ensuring smooth interoperability between the two. Shared memory between Razor and XAML enables seamless object transfer, such as passing a collection of Blazor objects to the ItemsSource of a XAML DataGrid.
Benefits and Use Cases of “XAML for Blazor”
XAML for Blazor unlocks new possibilities for Blazor developers, catering to a wide range of scenarios:
- Developers with a preference or expertise in XAML can now leverage their skills within Blazor applications. They can use familiar XAML features such as MVVM, Binding, Styling, Templating, Panels, Custom Controls, and more.
- Migrating or reusing code from existing XAML-based applications, such as WPF, Silverlight, UWP and WinUI apps, becomes more streamlined with XAML for Blazor’s near feature-parity with Silverlight and close similarity with the other technologies.
- XAML for Blazor provides access to powerful XAML controls like DataGrid and DataForm. It also lets you use the enterprise-focused features of OpenSilver, including RIA Services, WCF SOAP, PRISM, MEF, and more.
Our Vision: Empowering .NET Developers with Choice and Flexibility
We believe in offering developers the tools and flexibility to choose the best approach for their projects.
Our vision for XAML for Blazor is not to replace Razor, but rather to complement it, empowering developers and giving them more options to create even more powerful web applications.
By combining the strengths of XAML and Blazor, we aim to elevate Blazor as an even more attractive alternative to non-.NET-based frameworks such as React and Angular. We envision a future where Blazor applications will seamlessly incorporate both Razor and XAML, utilizing the strengths of each approach to create powerful, feature-rich, and maintainable web applications.
We’re always working to make our products better and fit what customers want. Some exciting developments on our roadmap include:
- Blazor Server-Side Support
We are working on extending “XAML for Blazor” support to include server-side Blazor applications in addition to Blazor WebAssembly.
- More Documentation & Examples
While developers can leverage the documentation and examples of Silverlight and WPF —given the near feature-parity with the former and close similarity with the latter —, we are also working on additional material to make for a great development experience.
- UI Designer
We plan to introduce a UI designer that leverages XAML’s static and declarative nature. This will reduce the time and effort required to create and maintain complex layouts and interactions.
- Improved Interoperability
While developers can already place Razor and XAML files side-by-side within the same Blazor project, we plan to go beyond this capability by adding support for combining Razor and XAML within the same file.
Flexible Pricing: Options for Every Level of Use
We provide options that cater to a variety of needs and budgets. Changes have been made to the pricing since the release. The pricing below is up to date with the changes made on July 19th 2023.
For individuals and hobbyists:
- The Free Personal Edition, available at no cost, permits commercial use for users and small companies with a revenue inferior to $200,000 a year.
Professionals, teams, and organizations have three license options:
- The Trial Edition is a 2-weeks trial period. It has the same terms as the free version, ideal for early-stage experimentation.
- The Professional Edition is available at a discounted price of $59 per month,or $499 per year. It has unlimited XAML files and commercial use, and includes email support. No revenue conditions are applied to this version.
- Finally, for organizations that need more, we have the Enterprise Edition. This edition includes all features of the Professional Edition and adds SLA support, an account manager, optional access to the full source code, optional technical sessions, and more. For pricing details of the Enterprise Edition, customers are encouraged to get in touch with us directly.
More information is available on the Pricing page.
Get Started with XAML for Blazor
Getting started with XAML for Blazor is very easy:
- Begin by referencing the “XAML for Blazor” package available on NuGet.org from within your “Blazor WebAssembly” project. Please note that support for “Blazor Server” is in our roadmap.
- You may optionally want to install our VSIX extension. This will add some “item templates” to Visual Studio 2022, allowing you to create new XAML files in Blazor projects using the “Add New Item” dialog.
- Proceed to add XAML files to your Blazor WebAssembly project. (Please note: If you copy and paste XAML files directly from your disk, make sure that their “Build Action” is set to “Content” instead of “None”)
- Finally, instantiate your XAML controls, or utilize the built-in types like DataGrid, DataForm, etc., from within your Razor pages using the code provided in the documentation.
5. Enjoy the result 🙂
The full Getting Started guide can be found here.
It contains sample projects, tutorials, and the FAQ.
For more information, please visit xaml-for-blazor.com.
For any questions or feedback, please contact us.
Join us on this exciting journey and start building the next generation of web applications with XAML for Blazor today!
(Note: “XAML for Blazor” is a 3rd-party extension made by Userware and is not affiliated with Microsoft)