This post from zhichai.net traces twenty years of Microsoft Windows UI technology through three framework generations, from managed code to native decoupled frameworks.
Key points
Generation 1: WPF (2006)
- Shipped with Windows Vista as part of .NET Framework 3.0; marked the shift from Win32 GUI to managed code.
- Introduced XAML (declarative UI) and strong MVVM/data-binding support; rendered via DirectX 9.
- Limitations: .NET Framework dependency, Windows Desktop only, performance constrained by managed code and DirectX 9.
- Launched with Windows 10 as part of the Universal Windows Platform: one codebase across PC, tablet, phone, Xbox, HoloLens.
- Native C++ core with language projections (C#, C++, JS); modern WinRT APIs; sandboxed AppContainer; Store distribution with automatic updates; native DirectComposition rendering.
- Key differences from WPF: native vs. managed core, Store/MSIX vs. MSI/ClickOnce, DirectComposition vs. DirectX 9 wrappers.
- Limitations: XAML engine was built into Windows 10, so new features required OS updates; UWP apps were isolated from Win32 desktop integration; strict Store review drove developers away.
- The revolutionary change: the entire UI stack is decoupled from the OS and shipped as NuGet packages via the Windows App SDK, fully independent of OS release cycles.
- Architecture layers: App (XAML + C#/C++) → Framework (Microsoft.UI.Xaml controls, binding, dependency properties, visual state manager) → Visual layer (Microsoft.UI.Composition: compositor, visual tree, effects, animation) → Graphics (DirectX 12 / DirectComposition with GPU acceleration).
- Comparison highlights:
- Uno Platform fully ports the WinUI 3 API to iOS, Android, WebAssembly, macOS, and Linux (native rendering plus Skia), in contrast to abstraction-layer approaches like MAUI/Xamarin.Forms that define a lowest-common-denominator API.
- WinUI 3 vs .NET MAUI: WinUI 3 targets Windows-native self-drawn UI via Windows App SDK; MAUI wraps native controls across iOS/Android/Win/macOS. Neither supports Linux; neither supports WebAssembly directly (MAUI offers Blazor Hybrid).
- New Windows projects: prefer WinUI 3 + Windows App SDK.
- Cross-platform needs: Uno Platform (WinUI API) or .NET MAUI (native feel).
- Legacy WPF: still usable, but feature development has stopped.
- UWP projects: migrate to WinUI 3 for continued updates.
Generation 2: UWP XAML (2015)
Generation 3: WinUI 3 (2020)
| Feature | WinUI 3 | UWP | WPF | |---|---|---|---| | OS dependency | Independent NuGet | Built into OS | .NET Framework | | Rendering | DirectX 12 | DirectComposition | DirectX 9 | | Desktop support | Win32 + UWP | UWP only | Win32 only | | Backward compat | Windows 10 1809+ | Version-bound | .NET Framework bound | | Update cadence | Monthly | ~6 months / with OS | Discontinued |
Dependency properties: the soul of XAML
WinUI 3 inherits the multi-level value resolution system, in priority order (highest to lowest): animated value → local value → templated value → style setter → default value from PropertyMetadata.Fluent Design System
WinUI 3 is the official Fluent Design implementation: Acrylic and Mica materials, Reveal highlight, elevation shadows, rounded corners, animation, and depth.Cross-platform ecosystem
Recommendations
References
1. Windows App SDK documentation 2. WinUI 3 GitHub repository 3. Uno Platform documentation 4. Fluent Design System> Originally compiled from the zhichai.net Uno Platform tutorial series, supplemented with official documentation.