MaterialDesignInXamlToolkit: Material Design for WPF Applications
Google's Material Design in XAML & WPF, for C# & VB.Net.
At a glance
- What is it?
- MaterialDesignInXamlToolkit is a theme and control library that applies Google's Material Design to Windows desktop WPF apps. It ships Material Design styles for standard WPF controls, extra controls like Cards and Dialogs, and a full icon pack, all installed through the MaterialDesignThemes NuGet package.
- Who is it for?
- Adopt MaterialDesignInXamlToolkit if you maintain a WPF codebase and want Material Design styling without rewriting controls; the MIT licence and NuGet packaging make it low friction. Avoid it if you are building for WinUI, UWP or cross-platform UI, because the library targets WPF only.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 2 days ago.
- What is it written in?
- Mainly C#, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 29, 2026, and from our analysis. They are not legal advice.
Editorial analysis
The WPF styling gap MaterialDesignInXamlToolkit fills
WPF ships with a control set that looks like Windows, not like Material Design. Getting a Material look means restyling every control template by hand, and the templates are long. MaterialDesignInXamlToolkit packages that work as a theme library. According to the README, it provides "Material Design styles for all major WPF Framework controls" plus additional controls such as Multi Action Button, Cards, Dialogs and Clock. It also includes the full Material Design Icons pack.
The target audience is C# and VB.Net developers working on Windows desktop applications who already have a WPF project. The README's quick guide assumes you have created a WPF project and are using Microsoft Visual Studio 2022. If your app is WinUI, UWP or cross-platform, this library is not the tool: it is a WPF library, and the repository's primary language is C#. The palette configuration follows Google's guidelines and can be set at design time or at runtime, which matters for apps that need light and dark modes or brand colours.
How the theme dictionaries and controls fit together
The mechanism is XAML resource dictionaries. You merge a BundledTheme into Application.Resources and pick a BaseTheme plus primary and secondary colours. Then you merge a defaults dictionary, either MaterialDesign2.Defaults.xaml or MaterialDesign3.Defaults.xaml, which supplies the actual styles for the framework controls. A window then opts in with Style="{StaticResource MaterialDesignWindow}".
The toolkit exposes two XML namespaces. The primary one, materialDesign, maps to http://materialdesigninxaml.net/winfx/xaml/themes and covers all public Material Design types, controls and converters. A second one, materialDesignInternal, maps to http://materialdesigninxaml.net/winfx/xaml/themes-internal and exposes types in internal sub-namespaces. The README warns that types in the internal namespace are "internal implementation details" and are not guaranteed to keep backwards compatibility between versions. That is a real constraint: if you reach for an internal converter to solve a styling problem, a minor version bump can break your XAML.
The repository also contains three demo applications: MaterialDesignDemo, a reference WPF app with Material Design 2 styling that the README calls "a recommended tool when developing apps with this library"; MaterialDesign3Demo, described as under development; and MahAppsDragablzDemo, which shows combining the toolkit with Dragablz and MahApps. Those demos are the closest thing to a specification of what each control supports, since the README itself is short.
Installing MaterialDesignThemes and applying the first theme
The README gives one installation command for the NuGet package, run from the Visual Studio Package Manager Console:
Install-Package MaterialDesignThemesAfter that, edit App.xaml to merge the theme and the defaults dictionary. This snippet is the README's example with the Material Design 2 defaults:
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<materialDesign:BundledTheme BaseTheme="Light" PrimaryColor="DeepPurple" SecondaryColor="Lime" />
<ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesign2.Defaults.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>The README notes that to target Material Design 3 you change the ResourceDictionary line to use MaterialDesign3.Defaults.xaml instead. Finally, opt the window into the theme. The README's MainWindow.xaml example adds:
<Window [...] Style="{StaticResource MaterialDesignWindow}" [...] >After a rebuild, the standard WPF controls in that window pick up the Material styling. If the window still looks like default WPF, the usual cause is a missing merged dictionary rather than a missing package. The README points to a full starting guide in the project wiki for more depth, which is worth reading before you restyle a large application, because the quick guide does not cover every control.
Where the toolkit gets in your way
The internal namespace is the sharpest limitation. Anything you bind from materialDesignInternal can change shape between releases, and the README explicitly says use it "at your own risk." If your design calls for behaviour that only internal converters expose, you are building on an unstable surface.
Material Design 3 support is partial. The README describes MaterialDesign3Demo as "under development," so an app that needs full MD3 fidelity should expect gaps and should check the demo app rather than assume parity with Material Design 2. The README also does not document a rollback path if a theme upgrade changes control appearance; it lists the full starting guide, but nothing in the repository documentation describes downgrading or pinning behaviour beyond normal NuGet versioning. Teams with strict visual regression requirements should treat a version bump as a change to test, not a drop-in.
This is also the wrong tool when the problem is not styling. It does not replace your layout system, and it does not make a WPF app cross-platform. If you need a UI framework that runs on macOS or Linux, the toolkit cannot help, because it is a Windows desktop WPF library.
How it differs from MahApps.Metro and Dragablz
The README lists compatibility with Dragablz and MahApps, which is the key distinction: those are not drop-in replacements for each other. MahApps.Metro is another WPF control and theme library, and Dragablz handles tab and window docking. MaterialDesignInXamlToolkit supplies the Material Design visual language and the controls that go with it, such as Cards, Dialogs, Multi Action Button and Clock.
Because they can be combined, the choice is not either/or. The repository includes MahAppsDragablzDemo specifically to show the combination, which tells you the maintainers expect mixed stacks. If you already use MahApps and want Material styling on top, the toolkit's theme dictionaries are the layer you add. If you want docking tabs, Dragablz is the layer, and the toolkit does not try to be it. The practical difference is scope: this project styles and adds Material controls, while the others handle window chrome and docking.
Release cadence, licence and upgrade cost
The most recent release is v5.3.2, published on 2026-05-01, following v5.3.1 on 2026-03-15 and v5.3.0 on 2025-10-06. The last push to the repository was on 2026-09-11. The repository is not archived, so the project is still receiving commits, though the gap between the v5.3.0 and v5.3.1 releases was roughly five months, which suggests minor releases are not frequent.
The licence is MIT. That is permissive: it allows commercial and closed-source use, modification and redistribution, provided the copyright notice and permission notice are kept. It is not legal advice, and if you ship a product you should confirm the notice requirements with your own counsel. The upgrade cost comes from the XAML surface rather than the licence. Because the theme is applied through merged dictionaries and a window style, a version bump can alter control templates across the whole app. The internal namespace warning compounds that: any XAML referencing materialDesignInternal should be reviewed on every upgrade. Budget for a visual pass over the MaterialDesignDemo app after each version change rather than assuming the theme is inert.
Editorial conclusion
Adopt MaterialDesignInXamlToolkit if you maintain a WPF codebase and want Material Design styling without rewriting controls; the MIT licence and NuGet packaging make it low friction. Avoid it if you are building for WinUI, UWP or cross-platform UI, because the library targets WPF only. Before committing, verify the MaterialDesign3.Defaults.xaml dictionary and the MaterialDesignWindow style in a throwaway project, and check the 5.3.2 release notes against your target framework.
Frequently asked questions
How can I use Material Design in XAML?
Install the MaterialDesignThemes NuGet package, then merge a BundledTheme and either MaterialDesign2.Defaults.xaml or MaterialDesign3.Defaults.xaml into Application.Resources, and set Style="{StaticResource MaterialDesignWindow}" on your window.
What is MaterialDesignInXamlToolkit?
It is a Material Design theme and control library for Windows desktop WPF applications, written in C# and VB.Net. It styles all major WPF Framework controls and adds controls such as Cards, Dialogs, Multi Action Button and Clock, plus a full Material Design Icons pack.
Which NuGet packages does MaterialDesignInXamlToolkit provide?
The README references MaterialDesignThemes and MaterialDesignColors on NuGet, with the install command Install-Package MaterialDesignThemes. The badges also list pre-release CI versions of both packages.
Does MaterialDesignInXamlToolkit support Material Design 3?
Yes, but the README says the MaterialDesign3Demo application is under development. To target MD3 you change the defaults dictionary line to MaterialDesign3.Defaults.xaml, and you should check the demo app for current coverage.
Is MaterialDesignInXamlToolkit compatible with MahApps and Dragablz?
The README lists compatibility with both Dragablz and MahApps, and the repository includes a MahAppsDragablzDemo application that demonstrates combining the toolkit with them.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/materialdesigninxaml-materialdesigninxamltoolkit)