Windows UI Library 3 (WinUI3)
Eintrag zuletzt aktualisiert am: 19.02.2025

Die
GUI-Bibliothek "WinUI 3" ist der Nachfolger der
Universal Windows Platform (UWP), der in
Windows 10 eingeführte neue Name für die "Modern Apps". Während UWP allein auf dem
WinRT-API aufsetzt und daher nicht alle Funktionen des Betriebssystems und alle lokalen Ressourcen verwenden kann, kann der eine WinUI3-basierte Anwendung wahlweise das
UWP Application Model auf Basis des
WinRT-API und/oder das klassische Windows Application Model auf Basis der
Win32-API nutzen. Damit stehen ihr alle Möglichkeiten des Windows-Betriebssystems zur Verfügung. Während in UWP die Weiterentwicklung der
Steuerelemente mit neuen Betriebssystemversionen erfolgte, sind die komplett in C++ als
Open Source auf GitHub [
https://github.com/microsoft/microsoft-ui-xaml] geschriebenen WinUI 3-
Steuerelemente von dem Betriebssystem entkoppelt; eine WinUI 3-Anwendung läuft daher auf allen
Windows 10-Versionen ab dem Creators Update aus dem Frühjahr 2017 und allen
Windows 11-Versionen.
Details zu WinUI3
Die
Windows UI Library 3 ist, wie die Drei schon ausdrückt, nicht die erste Version von Windows UI. Die Entwicklung der
Windows UI Library begann im Jahr 2012, ohne das sie dort schon so geheißen hätte. Mit Windows 8 führte Microsoft eine neue Windows-Oberfläche mit zugehörigen "Metro-Apps" ein – bis die deutsche Firma Metro AG sich gegen den Namen wehrte:
http://arstechnica.com/information-technology/2012/08/microsoft-metro-out-windows-8-style-ui-in-amid-rumors-of-a-trademark-dispute/. Danach sprach Microsoft von Apps im "Windows 8 UI-Style" und von "Modern Apps".
Technisch basierten diese Apps auf dem in Windows 8 als Alternative zum funktionsbasierten
Win32-API neu eingeführten, objektorientierten Window Runtime API (
WinRT-API) des Windows-Betriebssystems. Ab
Windows 10 im Jahr 2015 sprach Microsoft dann von
Universal Windows Platform (UWP) Apps und dem UWP XAML Framework und den UWP XAML Controls, womit auch klar ist, dass auch diese Anwendungen wie
WPF auf der xEtensible Application Markup Language (XAML) basieren, aber auf einem anderen Dialekt. Die Abweichungen zwischen XAML1 und XAML2 sind aber gering.
Den Namen
Windows UI Library (WinUI) hat Microsoft dann erst im Jahr 2018 eingeführt als Microsoft die UWP XAML Controls von dem an das Windows-Betriebssystem gebundenen UWP entkoppelte und damit auch eine Down-Level-Nutzung neuerer
Steuerelemente in älteren Win10-Versionen erlaubte.
Die
Windows UI Library 3 (WinUI3) gibt es seit dem Jahr 2021. WinUI3 ist - anders als
Windows Forms und
WPF - nicht Teil des
.NET Frameworks bzw. des
.NET SDKs, sondern ein wesentlicher Teil des
Windows App SDKs. Der .NET-Namensraum für WinUI3 ist Microsoft.UI (bei UWP war es Windows.UI).
UWP-Apps mit WinUI2 gibt es auch immer noch für
.NET 9.0 https://devblogs.microsoft.com/ifdef-windows/preview-uwp-support-for-dotnet-9-native-aot/. Microsoft sieht dies aber nicht als eine Lösung für neue Anwendungen an, sondern will damit nur den Umstieg auf WinUI3 erleichtern. Daher werden UWP-Apps mit WinUI2 hier nicht weiter thematisiert.
Microsoft versteht WinUI3 nun als "vollständiges UX Framework"
https://learn.microsoft.com/en-us/windows/apps/desktop/visual-studio-templates. WinUI3-Anwendungen laufen nun nicht mehr allein auf den
WinRT-APIs, sondern können alle
Win32-API-Funktionen ebenfalls nutzen. Damit gibt es auch nicht mehr die obligatorische Sandbox (App
Container), welche die Verbreitung von UWP-Anwendungen im geschäftlichen Umfeld stark einschränkte. Eine WinUI 3-Anwendung läuft auf allen
Windows 10-Versionen, ab dem Creators Update aus dem Frühjahr 2017 und allen
Windows 11-Versionen. Der App
Container ist bei WinUI3 möglich, aber keine Pflicht.
WinUI3-Oberflächen sind schneller als
WPF-Oberflächen, denn WinUI3 ist im Kern mit C++ implementiert und nicht in .NET-Code. Zudem nutzt WinUI3 die
DirectX-Version 12, während
WPF im Wesentlichen auf
DirectX 9 basiert. Im modernen .NET kommt in
WPF teilweise
DirectX 11 zum Einsatz.
Einen zusätzlichen Vorteil hat WinUI3 seit September 2024: Seit WinUI3-Version 1.6 (Microsoft zählt nicht mehr die "3" hoch, sondern vergibt eine Unterversionsnummer) lassen sich WinUI3-Anwendungen mit dem NativeAOT-Compiler bereits zur Entwicklungszeit direkt in Maschinencode übersetzen. Das verkleinert die Anwendungspakete und beschleunigt den Anwendungsstart, auch wenn es kleinere Leistungseinbußen bei der Ausführungsgeschwindigkeit der Anwendung geben kann, weil es dann keinen
Just-in-Time-Compiler (JIT) mehr gibt, der bei der Übersetzung Intermediate Language (IL) zu Maschinencode zur Laufzeit auf den Zielprozessor optimiert. Weder
Windows Forms noch
WPF können AOT-Kompilierung und es steht in den Sternen, ob und wann Microsoft das in den beiden älteren
GUI-Frameworks ermöglichen wird.
WinUI3 beherrscht grundsätzlich alle Features von
WPF (außer 3D-Rendering) und auch der Lernaufwand ist gleich. Im Detail gibt es aber Unterschiede zwischen WinUI3 und
WPF, nicht nur in der XAML-Syntax, sondern auch bei der verfügbaren
Steuerelementen. WinUI3 liefert im Standard mehr
Steuerelemente mit als
WPF. Wie bei
WPF gibt es auch hier eine Gallery-Anwendung im Microsoft Store
https://apps.microsoft.com/detail/9p3jfpwwdzrc.
Zahlreiche weitere
Steuerelemente liefert Microsoft kostenfrei im
Windows Community Toolkit https://github.com/CommunityToolkit/Windows; dazu gibt es nochmals eine eigene Gallery App (siehe
https://apps.microsoft.com/detail/9nblggh4tlcq); viele der
Steuerelemente sind aber im "Labs"-Stadium, was heißt: noch nicht fertig. Vergeblich sucht man in Microsofts WinUI3-Steuerelemnenten eine klassische Dateneingabetabelle. Im Community Toolkit in der aktuellen Version 8.0 gibt es nur eine nicht veränderbare Datentabelle. Es gab ein editierbares DataGrid-
Steuerelement im
Windows Community Toolkit 7.1 für UWP, siehe
https://learn.microsoft.com/en-us/windows/communitytoolkit/controls/datagrid. Auch für Diagramme, Berichte, Docking Manager u.v.m. Auch bei WinUI3 ist man also auf kommerzielle Drittanbietersteuerelementbibliotheken angewiesen. Dabei gibt es aber nicht so viele Optionen wie bei
Windows Forms und
WPF. Developer Express hat seine WinUI3-
Steuerelemente vom Ma
rkt genommen
https://www.devexpress.com/winui/. Infragistics hat es nicht mehr als eine Preview geschafft
https://www.infragistics.com/community/blogs/b/infragistics/posts/introducing-the-ultimate-ui-for-winui-preview. Actipro Software hat eine Portierung der bestehenden UWP-
Steuerelemente abgekündigt
https://www.actiprosoftware.com/community/thread/25476/winui-3-and-dotnet-maui. Das ist ein klarer Nachteil von WinUI3.
Schmerzlich ist, dass WinUI3 bis heute die in
WPF verfügbaren Features zur komfortablen Eingabevalidierung mit der Schnittstelle INotifyDataErrorInfo fehlen [
https://github.com/microsoft/microsoft-ui-xaml/issues/179]. Anders als in
WPF, wo Validierungsfehler automatisch ins UI übernommen werden können, müssen Entwicklerinnen und Entwickler in WinUI3 den Validierungszustand und die entsprechende visuelle Rückmeldung selbst steuern.
Ein weiterer wesentlicher Nachteil von WinUI3 ist, dass es keinen grafischen Designer gibt; Entwicklerinnen und Entwickler müssen also die Tags immer manuell eingeben. Der XAML Live Preview innerhalb von
Visual Studio und Hot Reloading funktioniert aber in WinUI3-Oberflächen.
Die Trennung von Benutzerschnittstelle und Code via
MVVM-Pattern funktioniert mit WinUI3 genauso gut wie mit
WPF. Das Look and Feel von WinUI3 ist moderner als bei
WPF, auch wenn man bei
WPF das Fluent Design seit
.NET 9.0 per eingebautem Resource Dictionary aktivieren kann. Die WinUI3-
Steuerelemente sind alle bereits auf Basis des Fluent Designs entwickelt worden und bieten auch entsprechende Animationen.
Bei der
Datenbindung bietet WinUI3 sogar mehr als
WPF, denn die
Datenbindungen können zur Entwicklungszeit bereits kompiliert werden (das macht man dort mit x:Bind) und müssen nicht zur Laufzeit erst übersetzt werden wie in
WPF. Das macht WinUI3-Anwendungen robuster und schafft die Voraussetzung für NativeAOT-Kompilierung. Auch für WinUI3 gelten die Installationsverfahren wie bei
Windows Forms und
WPF. Bei WinUI3-Anwendungen sieht die Projektvorlage bereits das Verbreiten als
MSIX-Paket vor (Packaged App).
Anlässlich der BUILD-Konferenz 2024 gab Microsoft am 21. Mai 2024 eine hilfreiche Stellungnahme heraus, welches Verständnis Microsoft selbst aktuell von WinUI3 und
WPF hat. "WinUI 3 gehört neben
Windows Presentation Foundation (
WPF) zu den beiden empfohlenen nativen UI-Plattformen für Entwickler. Microsoft beschleunigt die Einführung von WinUI 3 und
Windows App SDK in seinen eigenen Windows-Apps, darunter Fotos, Datei-Explorer,
Dev Home, PowerToys, Phone Link und andere … Gemeinsam stellen WinUI 3,
Windows App SDK und
WPF den besten Weg nach vorne für Entwickler dar zum Erstellen moderner nativer Desktop-Apps unter Windows. WinUI 3 wird verwendet, wenn der Funktionsumfang den Anforderungen der App entspricht, insbesondere für Grafik-, Medien- und Verbraucherszenarien.
WPF wird verwendet, um das große Ökosystem verfügbarer
Steuerelemente und Bibliotheken von Drittanbietern zu nutzen, insbesondere solche für Branchenanwendungen.“ (übersetzt von
https://news.microsoft.com/build-2024-book-of-news/).
Obwohl WinUI3 die aktuellste Desktop-Benutzeroberfläche für Windows bietet und es ständig Innovationen für WinUI3 gibt, ist die Nachfrage nach WinUI3 bei www.IT-Visions.de bisher gering, das eben auch an der von Microsoft in obiger Aussage dokumentierten Fokussierung von WinUI3 auf "Grafik-, Medien- und Verbraucherszenarien" liegt.
Vorgänger
Zeitplan
September 2019: Alpha 1
Feb 2020: Alpha 2
19.5.2020: Preview 1
Juli 2020: Preview 2
Nov 2020: Preview 3
April 2021: erste Produktionsreife Version, noch mit Versionsnummer 0.5
Version 1.0: Die Version 1.0 von WinUI3 ist am 16. November 2021 erschienen.
Seitdem Releases mit Updates 1.x zweimal jährlich.
Fakten zu WinUI3
Ausgewählte
GUI-
Komponentenanbieter für WinUI3
Microsoft
Windows Community
Toolkit
https://github.com/CommunityToolkit/WindowsCommunityToolkit
Syncfusion
WinUI Controls
https://syncfusion.com/winui-controls
Telerik
UI for WinUI
https://www.telerik.com/winui
MESCIUS (vormals GrapeCity)
ComponentOne WinUI Edition
https://developer.mescius.com/componentone/winui-controls
Details von Microsoft
"At the
Microsoft Build conference in May 2019 we shared our plans for WinUI 3.0, which will greatly expand the scope of WinUI to include the full native Windows UI platform."
[
https://github.com/Microsoft/microsoft-ui-xaml]
"This means that the Xaml framework will now be developed on GitHub and ship out of band as
NuGet packages. The existing UWP Xaml APIs that ship as part of the OS will no longer receive new feature updates. They will still receive security updates and critical fixes according to the
Windows 10 support lifecycle.
The
Universal Windows Platform contains more than just the Xaml framework (e.g. application and security model, media pipeline, Xbox and
Windows 10 shell integrations, broad device support) and will continue to evolve. All new Xaml features will just be developed and ship as part of WinUI instead.
Language: .NET (C#, Visual Basic), Standard C++
App model: UWP, Win32
Packaging:
MSIX,
AppX for the Microsoft Store, unpackaged
Interop: use WinUI 3 to extend existing
WPF,
WinForms and
MFC apps with modern
Fluent UI
WinUI 3.0 should be backward-compatible to Creators Update (15063) on
Windows 10, plus limited support on
Windows 8.1"
[
https://github.com/microsoft/microsoft-ui-xaml/blob/master/docs/roadmap.md]