Microsoft has announced public availability of Windows Community Toolkit version 7.0 with a number of improvements and features.
What is a Windows Community Toolkit?
The Windows Community Toolkit is a collection of helpers, extensions, and custom controls. It simplifies and demonstrates common developer tasks building UWP and .NET apps for Windows 10.
What’s new in version 7.0
In version 7.0, Microsoft is introducing an all new .NET Standard MVVM library, user friendly Toast Notification helpers for both .NET and UWP, as well as a completely revamped composition Animation system for C# & XAML and more.
Introducing the MVVM Toolkit for .NET – 🏆 Sergio Pedri
The Microsoft.Toolkit.Mvvm package is a modern, fast, and modular MVVM library. It is built around the following principles:
- Platform and Runtime Independent - .NET Standard 2.x 🚀 (i.e. UI Framework Agnostic)
- Simple to pick-up and use - No strict requirements on Application structure or coding-paradigms (outside of ‘MVVM’ness), i.e., flexible usage.
- À la carte - Freedom to choose which components to use.
- Reference Implementation - Lean and performant, providing implementations for interfaces that are included in the .NET Base Class Library, but lacks concrete types to use them directly.
The package targets .NET Standard so it can be used on any app platform: UWP, WPF, Xamarin, Uno Platform, and more; and on any runtime: .NET Native, .NET Core, .NET Framework, or Mono. It runs on all of them and provides a common API surface for all cases.
This makes it much easier to abstract the base Model and ViewModel logic from the application later, especially for projects which may want to target multiple UI frameworks.
This new library has been a nearly year-long community effort driven by Sergio Pedri and inspired by the work done by Laurent Bugnion’s MVVM Light. The Windows Template Studio team is also bringing support for the library to their suite of design patterns. We have worked with them, Microsoft MVPs (Matt Lacey, James Croft, Nick Randolph, Diederik Krols, and Martin Zikmund), and our community to develop, test, and validate core scenarios of the library before its release here.
You can find samples and more about the MVVM Toolkit here.
Improved Notification Support for Win32 and .NET 5
Unpackaged Win32 C# apps can now effortlessly use toast notifications, no Start menu shortcut required! Just call the following API, and that is literally it! new ToastContentBuilder() .AddText(“Hello toast!”) .Show();
Plus, this same simplified API works identically for UWP and packaged MSIX C# apps too! No more lengthy ToastNotificationManager.CreateToastNotifier().Show(content.GetXml()).To try this out, see the doc page here. You can see us add notifications end-to-end to a WPF app in less than 2 minutes in this video!
Explicit Animation Helpers – 🏆 Sergio Pedri
As called out above, we have revamped our Animations package in the toolkit. Beyond that though, we have added a new ‘Explicit Animation’ system. If you have used our Implicit Animation helpers in the past, you will love these!
Not only do we have a powerful new AnimationBuilder class to help you create gorgeous and powerful composition animations within C#, but we have also exposed it to XAML as well. Look at what you can do below now without code-behind!
Now all your composition animations can be done with a nice C# API or in XAML just like our Implicit Animations Helpers that have been so widely loved in the past. Enjoy, and share your creations with #WindowsCommunityToolkit on Twitter.
TabbedCommandBar – 🏆 Yoshi Askharoun
The TabbedCommandBar is an app level navigation interface that delivers a flexible space to control commanding within your app. It provides a familiar experience found in many productivity apps and allows an app developer to group similar commands together. It also provides the ability to add contextual tabs for displaying options which may be only useful when a user is making specific changes within the app.
Improved ColorPicker – 🏆 Robert Looyengoed
After discussions on the WinUI GitHub about revitalizing the ColorPicker control, the community stepped forward to envision a new experience for picking Colors. Robert developed a new version of ColorPicker for everyone to use and try. We hope to provide feedback and improvements based on this new experience to the platform team when they next refresh ColorPicker in the future.
SwitchPresenter – 🏆 Michael Hawker
The SwitchPresenter is a new way to layout and organize your XAML. It provides the equivalent of a switch statement from C# in XAML! It can make it easier to group elements together that are related to a scenario instead of getting them jumbled together with many Visibility bindings. Or you can use it to completely swap out a section of UI easily based on some other factor. Check out our example in our docs.
On The Horizon
Project Reunion 0.5 Preview
As you hopefully know, we have been shipping previews of the Toolkit that work for WinUI 3 alongside their preview releases. We have released a preview of the toolkit which works for Desktop apps with .NET on the Project Reunion 0.5 Preview released last week. Find out more details on how to try this out here.
Future NuGet Package Identity Changes
In a few weeks, we will release an updated version of our WinUI 3 based controls to NuGet for Project Reunion 0.5. As part of this change, we’ll also be starting to use a new package identity root of CommunityToolkit.* for our packages. Our existing UWP packages will remain as Microsoft.Toolkit.Uwp.*; however, our new packages for WinUI will be under CommunityToolkit.WinUI.*.
Our plan will be to deprecate the UWP packages at a time in the future when we feel our community as a whole can migrate to WinUI 3 when it supports the features our existing UWP community knows and loves today. Until that time, we will plan to support our existing UWP developers first via our existing packages built on top of UWP + WinUI 2.x and ship parallel versions for WinUI 3. Therefore, each next toolkit release for UWP (e.g. 7.1) will have a corresponding version 7.1 which contains the same feature set but for WinUI 3 (outside of anything not currently supportable on WinUI 3 yet).
There’s a ton of fixes, other helpers, and improvements across the board from our community this release, so be sure to visit our release notes for all the details!