About

MahApps.Metro is a UI toolkit for WPF. It takes the standard Windows Presentation Foundation controls — the ones you already know and already use — and gives them a clean, modern look, then adds the pieces WPF never shipped: a proper window chrome, a theming engine, dialogs that do not block, and a set of navigation controls.

The project started on 29 January 2011 and has been going ever since. It is MIT licensed, has been part of the .NET Foundation since 2020, and is used by thousands of desktop applications.

2011
first commit
9,800+
GitHub stars
2,400+
forks
MIT
licence

What makes it MahApps

It restyles what you already have. Most UI libraries ask you to swap your controls for theirs. MahApps.Metro does the opposite: reference it, merge two resource dictionaries, and your existing Button, TextBox, DataGrid and TreeView are restyled in place. No rewrite, no new control names, no vendor lock-in on your XAML.

A window that actually looks like an app. MetroWindow replaces the Windows title bar with one you control — your own commands to the left and right of the title, a coloured glow border, an overlay for dialogs, and flyouts that slide in from any edge.

Theming is a first-class feature, not a stylesheet. Themes are built from a base theme (Light or Dark) and an accent colour, switchable at runtime, and the ThemeManager can follow the Windows accent colour and the system's light/dark setting. You can generate your own themes from the same scheme the built-in ones use.

Helpers instead of subclasses. Watermarks, clear buttons, per-control corner radii, spell-check styling, selected-item brushes — these arrive as attached properties like TextBoxHelper.Watermark, so you attach behaviour to a stock control instead of inheriting from a special one.

It is old in the good way. Fifteen years of use in real applications, a stable v2 API, and an issue tracker with a long memory. The edge cases have been found.

What you can build with it

Windows and chrome. MetroWindow with custom title-bar commands, glow borders, and MetroNavigationWindow for page-based navigation.

Navigation. A HamburgerMenu for the side-bar pattern, a SplitView underneath it, Flyouts from any edge, and animated tab controls.

Dialogs. Message, input, login and progress dialogs shown as an overlay inside your window instead of a blocking modal — awaitable, and usable from a view model.

Input and data. A ColorPicker, DateTimePicker, NumericUpDown, MultiSelectionComboBox, HotKeyBox and a restyled DataGrid.

Feedback. Badges, progress bars and rings, toggle switches and validation popups.

Look and feel. Themes you can switch at runtime and style variants that follow Visual Studio, Windows 10 or WinUI conventions.

The Quick Start gets you to a running MetroWindow in a few minutes.

MahApps.Metro 2.4 runs on .NET Framework 4.5.2 and newer as well as .NET Core 3.x, which is the asset current .NET applications resolve to. Version 3.0, available as a release candidate on NuGet, brings the window chrome up to date with Windows 11: the caption buttons are registered as non-client controls, so the maximise button takes part in snap layouts, and the window can use the newer backdrop materials.

The people behind it

Presented in the order they first committed to the repository, with the dates and commit counts taken from its history.

MaintainerActiveCommits
Paul Jenkins
@vikingcode
Jan 2011 – Jan 2013254
Brendan Forster
@shiftkey
Mar 2011 – Jul 2013181
Thomas Freudenberg
@thoemmi
Jan 2012 – Feb 2017106
Dennis Daume
@flagbug
Feb 2012 – Feb 2015451
Jan Karger
@punker76
Dec 2012 – today3,923
@AzureKitsune Feb 2013 – Jun 2014385
Michael Mairegger
@michaelmairegger
May 2013 – Jun 2017287
Bastian Schmidt
@batzen
Feb 2017 – May 2024111
Tim
@timunie
Jun 2019 – May 202353

Paul Jenkins started the project and wrote the first two years of it. Brendan Forster joined weeks later and shaped the early releases. Thomas Freudenberg and Dennis Daume carried it through the 2012–2015 period, Dennis with the second-largest body of work in the project after the current lead.

Jan Karger made his first commit in December 2012 and has maintained MahApps.Metro ever since — by a wide margin the most prolific contributor, and the person behind the v2 rewrite. @AzureKitsune and Michael Mairegger were the other main hands of the middle years, and Tim joined after v2.

Bastian Schmidt deserves a particular mention. He is the lead contributor to ControlzEx, the library MahApps.Metro's window handling is built on, and the two projects have advanced together ever since — a good deal of what looks like MahApps behaviour is really ControlzEx underneath. He is also the driving force behind getting MahApps.Metro to behave correctly on Windows 11, from registering the caption buttons as non-client controls so that snap layouts work, to the backdrop materials.

Brendan Forster, @AzureKitsune, Bastian Schmidt and Jan Karger remain members of the MahApps organisation; Thomas Freudenberg and Tim are outside collaborators.

Beyond them, more than 160 people have contributed code, and many more have reported issues and answered questions. The full list is on the contributors page.

Getting involved

MahApps.Metro is developed in the open at github.com/MahApps/MahApps.Metro. Issues and pull requests are welcome — including for this documentation, which lives in its own repository and has an edit link on every page.

The library is released under the MIT licence, copyright the .NET Foundation and contributors.