MahApps/MahApps.Metro
41.3
Weak · 28 September 2026
55.3k
lines of production code
C#
primary language
6
measurements over time
What this system is
This system is a comprehensive WPF UI component library that provides a modern, customizable visual framework for Windows desktop applications. It delivers a wide array of controls—including dialogs, flyouts, pickers, and data grids—along with multiple theming engines that support Metro, Windows 10, and WinUI design languages. The library also includes extensive accessibility support, interactive sample galleries for developer reference, and robust infrastructure for theme synchronization and native interop.
How it got here
2011–2018 — SDK migration and modernization
44 changes.
The project underwent a comprehensive migration from legacy .NET Framework project files to modern .NET SDK-style projects, introducing multi-targeting and centralized dependency management. This period focused on modernizing the codebase by replacing legacy controls and styles with WinUI-aligned designs, refactoring core components like dialogs and the HamburgerMenu, and updating the build infrastructure and test suites to support these changes.
2019–2026 — WinUI modernization and control expansion
20 changes.
This period focused on modernizing the library's visual identity with new Windows 10 and WinUI style sets, while significantly expanding the control suite with features like ColorPicker, AutoSuggestBox, and MultiSelectionComboBox. Concurrently, the project enhanced accessibility through comprehensive UI Automation support and introduced a new Gallery sample application to showcase these interactive components.
Features
Added Home and Interesting demo pages to the navigation sample
The navigation demo now includes two new sample pages: HomePage, which features a hyperlink to the InterestingPage and a TextBox to demonstrate state persistence across navigations, and InterestingPage, a placeholder page for testing navigation flows.
src/MahApps.Metro.Samples/MahApps.Metro.Demo/Navigation · high confidence
Demo app adds model classes for new sample pages
The demo application introduces a set of new data models to support recently added sample pages. These include Album, Artist, and Genre for the music library view; Animals for a list sample; HeaderSettings and BrushChoice for the new header customization page; NumericUpDownSettings for the up-down controls tab; MailboxFolder for the badge page; Photo for the FlipView gallery; TransitionContent for the transitions tab; CustomDialogExampleContent for custom dialogs; ThemeResource for theme inspection; and ObjectParser to handle string-to-object conversion in the animals list.
src/MahApps.Metro.Samples/MahApps.Metro.Demo/Models · high confidence
Demo application restructured with new example views and behaviors
The MahApps.Metro.Demo application has been significantly updated to showcase new controls and behaviors. New example views have been added for AutoSuggestBox, Badges, Buttons, Colors, ColorPicker, CustomDialogs, and DataGrids, providing users with interactive samples for these features. A new DateTimeNowBehavior has been introduced to demonstrate live time updates in DateTimePicker controls. The demo also includes a CountedView to help visualize the performance cost of content transitions in FlipView controls.
src/MahApps.Metro.Samples/MahApps.Metro.Demo/ExampleViews · high confidence
Expanded UI Automation support for MahApps.Metro controls
This update adds dedicated UI Automation peers for a wide range of MahApps.Metro controls, including AnalogClock, AutoSuggestBox, Badged, DropDownButton, FlipView, Flyout, FlyoutsControl, HotKeyBox, MetroDialog, MetroHeader, MetroThumbContentControl, MetroWindow, NumericUpDown, ProgressRing, RangeSlider, Tile, ToggleSwitch, and WindowCommands. These peers ensure that assistive technologies can correctly identify control types, read names and statuses (such as badge counts, progress values, and range slider bounds), and interact with patterns like Expand/Collapse, Toggle, and RangeValue, thereby improving accessibility for users relying on screen readers and inspection tools.
src/MahApps.Metro/Automation · high confidence
Gallery app core infrastructure for interactive samples and navigation
The MahApps.Metro.Gallery sample application now includes a complete core infrastructure to support interactive control demonstrations. This adds a centralized page registry (GalleryPages) that drives the navigation and search, along with supporting classes (GalleryPage, GalleryCommands) for linking to documentation and source code. To enable live editing, the gallery introduces an XAML formatter (ExampleXamlFormatter) that updates displayed markup with current property values, a clipboard command (CopyText), and a syntax highlighting system (XamlSyntaxHighlighting) that adapts AvalonEdit colors to the active light or dark theme. Supporting converters (BrushToColorConverter, NumberConverter, PagePositionConverter) and a validation model (ValidationSample) ensure that user inputs are correctly handled and errors are displayed, while a RelayCommand class provides the underlying command binding mechanism for the gallery's interactive elements.
src/MahApps.Metro.Samples/MahApps.Metro.Gallery/Core · high confidence
Gallery app introduces themed XAML syntax highlighting and configurable control examples
The MahApps.Metro.Gallery sample app now features a new ControlExample component that displays live control samples alongside a collapsible options pane for adjusting properties. A key addition is the integration of AvalonEdit with a custom XAML syntax highlighting definition (Xaml.xshd) that dynamically adapts to the active theme's color palette, ensuring code snippets remain readable on both light and dark backgrounds. The options pane supports various data types—including booleans, numbers, choices, and colors—using dedicated editors like ToggleSwitch, NumericUpDown, and ColorPicker, allowing users to interactively tweak control properties and see immediate visual feedback.
src/MahApps.Metro.Samples/MahApps.Metro.Gallery/Themes · high confidence
Gallery sample app adds pages for new and existing controls
The MahApps.Metro.Gallery sample application has been expanded with new XAML pages demonstrating the visual appearance and usage of various controls. New pages have been added for the AnalogClock, AutoSuggestBox, Badged, Button, Calendar, CheckBox, ColorPicker, and ComboBox controls. These pages showcase the controls in their default MahApps styling as well as specific Windows 10 and WinUI looks where applicable, providing developers with interactive examples of how to implement these UI elements in their own applications.
src/MahApps.Metro.Samples/MahApps.Metro.Gallery/Pages · high confidence
HamburgerMenu items now support visibility toggling and distinct header/separator styles
The HamburgerMenu control now exposes an IsVisible property on all menu items, allowing users to programmatically show or hide entries without removing them from the collection. Additionally, the menu now supports dedicated HamburgerMenuHeaderItem and HamburgerMenuSeparatorItem types, which are styled via the new HeaderItemContainerStyle and SeparatorItemContainerStyle properties on the HamburgerMenu, enabling clear visual separation between navigation options and section headers.
src/MahApps.Metro/Controls/HamburgerMenu/MenuItems · high confidence
Introduce MultiSelectionComboBox control for multi-item selection
Adds the MultiSelectionComboBox control, a new WPF component that extends the standard ComboBox to support selecting multiple items. This control introduces dedicated routed events (AddingItem, AddedItem) and a pluggable IParseStringToObject interface to allow custom parsing of text input into objects, along with built-in commands for clearing content, removing items, and selecting all. It also provides configuration options for selection modes (Single, Multiple, Extended) and the display order of selected items (SelectedOrder or ItemsSourceOrder).
src/MahApps.Metro/Controls/MultiSelectionComboBox · high confidence
Localized resource files for accessibility and color names are now included in the library
The library now ships with strongly-typed resource classes and corresponding .resx files in the MahApps.Metro.Lang namespace, providing localized strings for WPF built-in color names (e.g., ColorNames.resx) and accessibility automation text (e.g., Automation.resx). This allows applications to access translated UI labels and color names directly through the library's resources rather than relying on demo-specific or internal project resources.
src/MahApps.Metro/Lang · high confidence
New AutoSuggestBox control for real-time text suggestions
Added a new AutoSuggestBox control to MahApps.Metro that displays a list of suggestions while the user types. This control extends ComboBox to provide an editable text field with a popup list, allowing applications to populate suggestions via ItemsSource. It exposes specific routed events (TextChanged, SuggestionChosen, QuerySubmitted) and event arguments that distinguish between user input, programmatic changes, and suggestion selections, enabling precise handling of the suggestion workflow.
src/MahApps.Metro/Controls/AutoSuggestBox · high confidence
New ColorPicker UI components and themes
The ColorPicker control now includes dedicated XAML theme resources for its sub-components, introducing a ColorCanvas for HSV color selection, a ColorEyeDropper for picking colors from the screen, a ColorPalette for displaying swatch groups, and specialized ColorComponentSlider styles for Hue, Saturation/Value, and ARGB channels. These additions provide the visual structure and styling for the expanded color selection interface.
src/MahApps.Metro/Themes/ColorPicker · high confidence
New ColorPicker control suite with eye-dropper and color canvas
The ColorPicker area now includes a complete set of new controls: ColorPicker (the main dropdown UI with standard, available, custom, and recent color palettes), ColorCanvas (for interactive saturation/value selection), and ColorEyeDropper (a button that captures screen pixels for color picking, complete with a live preview tooltip). Supporting infrastructure includes ColorPickerBase (handling selected color, HSV values, and color name binding), ColorPalette (a styled ListBox for color lists), BuildInColorPalettes (providing standard and WPF color collections with recent-color management), ColorHelper (localizing color names via CultureInfo), and EyeDropperHelper (native GDI32 calls for screen capture). Users gain a richer, more flexible color selection experience with configurable triggers for adding colors to recent history, customizable palettes, and the ability to pick colors directly from the screen.
src/MahApps.Metro/Controls/ColorPicker · high confidence
New DataGrid numeric up-down columns for decimal, integer, and long types
MahApps.Metro now provides dedicated DataGrid columns for numeric input: DataGridDecimalUpDownColumn, DataGridIntegerUpDownColumn, and DataGridLongUpDownColumn. These columns allow users to edit cell values using the library's up-down controls, with type-specific defaults for minimum, maximum, and interval values, enabling precise data entry for measurements, counts, and large identifiers directly within DataGrid cells.
src/MahApps.Metro/Controls · high confidence
New FontIcon and PathIcon controls with improved foreground inheritance
The library introduces two new icon controls, FontIcon and PathIcon, which extend the new IconElement base class to provide consistent foreground inheritance from the visual parent. FontIcon displays glyphs from a specified font using a TextBlock, while PathIcon renders vector geometry using a Path element. Both controls automatically inherit the foreground color from their parent when no explicit foreground is set, ensuring they blend correctly with the surrounding UI theme.
src/MahApps.Metro/Controls/Icons · high confidence
New HamburgerMenu Ripple demo with custom item styling
The demo application now includes a new 'HamburgerMenuRipple' sample that demonstrates a custom visual style for the HamburgerMenu control. This style replaces the default item container template with one that integrates a Material Design Ripple effect and applies rounded corners (CornerRadius) to the menu items. The demo also showcases specific brush bindings for selection, hover, and disabled states via the ItemHelper attached properties, providing a reference implementation for developers wanting to achieve this specific look and feel in their own applications.
src/MahApps.Metro.Samples/MahApps.Metro.Demo/HamburgerMenuRipple · high confidence
New MahApps.Metro Gallery sample application
A new sample application named MahApps.Metro.Gallery has been added to provide a browsable showcase of MahApps.Metro controls. The app features a HamburgerMenu-based navigation interface with a bottom status bar that displays the current category and control title, along with a search feature to filter available samples. It applies a WinUI-style scrollbar theme across the application and initializes XAML display resources to ensure code blocks render correctly within the sample cards.
src/MahApps.Metro.Samples/MahApps.Metro.Gallery · high confidence
New ShellView for Caliburn Metro Demo
The Caliburn Metro demo application now includes a new ShellView that serves as the main window for the Flyouts demo. This view utilizes MahApps.Metro's MetroWindow and FlyoutsControl to display a grid of buttons that allow users to toggle various flyouts (left, right, top, bottom, and settings) and close the application, providing a concrete UI example for integrating Caliburn.Micro with MahApps.Metro flyout functionality.
src/MahApps.Metro.Samples/MahApps.Metro.Caliburn.Demo/Views · high confidence
New WinUI visual style set for controls
A new WinUI style set is now available, providing a modern look that aligns with the Windows 11 design language. This style is built on top of the existing Windows 10 styles to ensure consistency within the family, and it applies to a comprehensive range of controls including buttons, menus, lists, pickers, and color tools. Users can now switch to this look to give their applications a more contemporary appearance while maintaining compatibility with the underlying control structures.
src/MahApps.Metro/Styles/WinUI · high confidence
New and updated control themes for MetroWindow components
The theme files in src/MahApps.Metro/Themes have been refreshed to support new and improved controls. This includes the introduction of styles for the AnalogClock, AutoSuggestBox, Badged, ContentControlEx, DateTimePicker, and DropDownButton controls, providing consistent visual definitions for these UI elements. Additionally, existing themes such as Badged have been updated with new animation storyboards and placement logic, ensuring that visual feedback and layout behaviors align with the current design system.
src/MahApps.Metro/Themes · high confidence
New behaviors for DatePicker, PasswordBox, and TabControl selection
The Behaviors folder now includes several new behaviors to enhance control interaction: DatePickerTextBoxBehavior automatically updates the HasText state on the parent TextBoxHelper when the date picker text changes; PasswordBoxBindingBehavior enables two-way binding for PasswordBox controls while fixing an issue where revealing a password would incorrectly scroll the page; and TabControlSelectFirstVisibleTabBehavior ensures the first visible tab is selected when others are hidden. These additions provide more robust data binding and UI state management for standard WPF controls.
src/MahApps.Metro/Behaviors · high confidence
New helper classes and attached properties for WPF controls
This update introduces a suite of new helper classes in the Controls/Helper directory to provide enhanced styling and behavior control for MahApps.Metro WPF controls. Key additions include AccessKeyHelper for managing access key scoping, AmPmComparer to ensure correct hour sorting in TimePickers, and BindingHelper for evaluating binding expressions in code-behind. Significant new attached properties are added to CheckBoxHelper (CheckCornerRadius, CheckSize, CheckStrokeThickness, and unchecked state glyphs), ComboBoxHelper (DropDownBackground, DropDownBorderBrush, DropDownCornerRadius, MaxLength, CharacterCasing, and InterceptMouseWheelSelection), and ControlsHelper (DisabledVisualElementVisibility, ContentCharacterCasing, RecognizesAccessKey, FocusBorderBrush, and the deprecated FocusBorderThickness). Additionally, DataGridHelper and DataGridColumnStylesHelperExtension are introduced to allow styling of auto-generated DataGrid columns (Text, CheckBox, ComboBox, NumericUpDown, Hyperlink) and to simplify one-click editing of DataGrid elements.
src/MahApps.Metro/Controls/Helper · high confidence
New interactive sample cards in the Gallery app
The Gallery sample application now features a new \ControlExample\ card component that displays a live control alongside its editable options and the corresponding XAML source. This component automatically binds to control properties, allowing users to modify values and see the changes reflected in both the live preview and the generated code block. It intelligently handles attached properties, read-only states, and various data types (such as enums, brushes, and nullable types) to provide appropriate editors, ensuring the displayed XAML accurately reflects only the values explicitly set by the user.
src/MahApps.Metro.Samples/MahApps.Metro.Gallery/Controls · high confidence
New value converters for color, geometry, and math operations
The library introduces a suite of new value converters in the \Converters\ namespace to support advanced UI binding scenarios. These include \BackgroundToForegroundConverter\ for automatic text contrast, \ClipGeometryConverter\ for precise rounded-rectangle clipping with border/padding awareness, and \CornerRadiusFilterConverter\/\CornerRadiusBindingConverter\ for manipulating corner radii. Color handling is expanded with \ColorChannelMinMaxConverter\ and \HSVColorChannelMinMaxConverter\ for generating gradients and min/max variants, alongside \ColorToSolidColorBrushConverter\ and \ColorToNameConverter\. Utility converters such as \MathConverter\ (with markup extensions for add/subtract/multiply/divide), \IsNotNullConverter\, \IsNullConverter\, and \ClockDegreeConverter\ are also added to simplify data binding logic.
src/MahApps.Metro/Converters · high confidence
TimePicker and DateTimePicker controls rewritten with new features
The TimePicker and DateTimePicker controls have been completely rewritten to provide a more robust and flexible user experience. The TimePicker now includes a dedicated AnalogClock control for visual time selection, a 'Now' button for quick insertion of the current time, and support for custom Am/Pm value comparators. The DateTimePicker has been enhanced with its own independent clock, configurable date display ranges (Start/End), and the ability to specify custom formats for the input field. Both controls now feature improved input validation, including a new DateTimeValidationError event to notify users when text cannot be parsed, and better handling of culture-specific time formats.
src/MahApps.Metro/Controls/TimePicker · high confidence
Visual Studio 2017 theme styles for controls and menus
The Visual Studio 2017 theme now includes dedicated styles for Buttons, ContextMenus, Menus, MenuItems, Expander, GroupBox, ListBox, and TabControls. These styles adopt the VS color palette and UI conventions, such as rounded corners, specific highlight colors, and a checkmark for selected menu items. The theme also provides a custom context menu for TextBox controls and ensures content is clipped to the border radius for a consistent appearance.
src/MahApps.Metro/Styles/VS · high confidence
Windows 10 control style set introduced
A new Windows 10 visual style set is now available for MahApps.Metro controls. By merging the new \Styles/Win10/Controls.xaml\ resource dictionary, applications can switch their UI to match the UWP/Windows 10 aesthetic. This set provides implicit styles for a wide range of controls including buttons, menus, list boxes, text boxes, pickers, and color pickers, overriding the default Metro look with the specific Windows 10 design language.
src/MahApps.Metro/Styles/Win10 · high confidence
Removals
Removal of MetroDemo Properties folder files
The AssemblyInfo, Resources, and Settings files in the MetroDemo/Properties directory have been deleted. This removes the assembly metadata, strongly-typed resource accessors, and application settings configuration that were previously defined in this location.
MetroDemo/Properties · high confidence
Removal of legacy ToggleSwitch control and its theme definitions
The legacy ToggleSwitch control and its associated XAML theme definitions in Generic.xaml have been removed from the MahApps.Metro.Controls library. This change eliminates the deprecated UI component that previously allowed users to toggle between two states, along with the underlying C\# code-behind and visual state templates that defined its appearance and behavior.
MahApps.Metro.Controls/Themes · high confidence
Removed legacy WPF demo shell files
The legacy WPF demo application shell has been removed from the MetroDemo project. This includes the deletion of App.xaml, App.xaml.cs, MainWindow.xaml, and MainWindow.xaml.cs, which previously defined the basic application entry point and main window structure. This cleanup removes unused scaffolding code that is no longer part of the active demo implementation.
MetroDemo · high confidence
Behavioural changes
Add standard assembly metadata and license header to Caliburn Demo
The Caliburn Demo project now includes an AssemblyInfo.cs file that registers the assembly under the .NET Foundation MIT license and sets standard COM visibility and WPF theme resource locations. This ensures the demo assembly is correctly identified and licensed within the solution.
src/MahApps.Metro.Samples/MahApps.Metro.Caliburn.Demo/Properties · high confidence
Add standard assembly metadata to the demo project
The demo application now includes an AssemblyInfo.cs file that sets ComVisible to false and configures WPF theme resource locations, providing standard assembly metadata required for proper integration and visibility in COM interop scenarios.
src/MahApps.Metro.Samples/MahApps.Metro.Demo/Properties · high confidence
Added .NET 4.7.2 compatibility switch for accessibility features
A new static property, UseNetFx472CompatibleAccessibilityFeatures, has been added to the AccessibilitySwitches class. This allows users to force accessibility features to remain compatible with .NET Framework 4.7.2, disabling any accessibility enhancements introduced in later .NET versions.
src/MahApps.Metro/Accessibility · high confidence
Build system restructured with centralized MSBuild props and multi-targeting
The build configuration has been centralized into new Directory.Build.props and Directory.Build.Targets files, establishing a unified build environment for the solution. This change introduces multi-targeting support for .NET 8.0, .NET 6.0, and .NET Framework 4.6.2, while enabling C\# latest major language features and nullable reference types across the project. Additionally, the build now includes SourceLink integration for debugging and applies a workaround for a WPF analyzer duplication issue.
src · high confidence
Clean style theme receives visual updates and bug fixes
The Clean style theme has been updated to improve visual consistency and fix layout issues. The GroupBox control now correctly binds header properties (such as font size, foreground, and character casing) via its template, resolving previous binding gaps. Window button commands now default to the Win10 visual style for a more modern appearance, and the MetroWindow title is centered with transparent background brushes. Additionally, the WindowCommands separator height is adjusted to 11 pixels, and the close button hover/press states now use specific accent colors (\#E81123) for the Win10 variant.
src/MahApps.Metro/Styles/Clean · high confidence
Demo app core refactored for .NET 5 and enhanced XAML preview
The demo application's core utilities have been rewritten to support .NET 5, introducing nullable reference types and conditional compilation for modern C\# features. A new \BindingProxy\ class is provided to resolve WPF DataContext binding errors in controls outside the visual tree. The MVVM infrastructure is improved with a new \SimpleCommand\<T\>\ implementation and a \ViewModelBase\ that uses a generic \Set\ helper for property change notification. Additionally, a new XAML preview feature allows users to view and copy the underlying XAML of samples; this includes a \XamlDisplayCommands\ class for clipboard operations and a \XamlSyntaxHighlighting\ singleton that dynamically updates AvalonEdit syntax colors to match the active light or dark theme.
src/MahApps.Metro.Samples/MahApps.Metro.Demo/Core · high confidence
Demo app introduces custom view and theme management infrastructure
The demo application now includes a dedicated controls layer that implements custom interfaces for view location and theme management. This adds a \ViewLocator\ that overrides the default Caliburn.Micro view creation logic to support dependency injection and caching, and a \ThemeManager\ that loads MahApps.Metro resource dictionaries. These components are wired together via a \StartupTasks\ class that applies the custom view locator and theme resources at application initialization, replacing the previous implicit or default behavior with explicit, extensible configuration.
src/MahApps.Metro.Samples/MahApps.Metro.Caliburn.Demo/Controls · high confidence
Demo app now uses Caliburn.Micro v4 with flyout view models
The Caliburn.Demo sample has been updated to use Caliburn.Micro v4.0.173. The ShellViewModel now initializes a collection of flyout view models (Flyout1, Flyout2, Flyout3, FlyoutSettings, FlyoutLeft, FlyoutTop, and FlyoutBottom) that inherit from a new FlyoutBaseViewModel, allowing users to toggle the open state of these flyouts in the demo.
src/MahApps.Metro.Samples/MahApps.Metro.Caliburn.Demo/ViewModels · high confidence
Demo app restructured to showcase theme synchronization and XAML display features
The MahApps.Metro.Demo application has been restructured to demonstrate updated theming capabilities and new developer tools. The main window now integrates with ControlzEx's ThemeManager to allow users to toggle theme synchronization modes (SyncAll) and switch between HSL and RGB color representations for accents and base themes. Additionally, the demo now features a new XamlDisplay control that allows users to view and copy the underlying XAML for each sample, with syntax highlighting that dynamically adapts to the currently selected theme.
src/MahApps.Metro.Samples/MahApps.Metro.Demo · high confidence
Demo application converted to Caliburn.Micro v4 with MEF integration
The MahApps.Metro.Caliburn.Demo sample has been refactored to use Caliburn.Micro v4.0.173, replacing the previous bootstrapper implementation with a new AppBootstrapper that utilizes MEF (Managed Extensibility Framework) for dependency injection and service location. This change introduces new core files including App.xaml, AppBootstrapper.cs, and IShell.cs, establishing the modern MVVM foundation for the demo. Additionally, the application manifest has been updated to declare support for Windows 10 and enable PerMonitorV2 DPI awareness for better high-DPI display handling.
src/MahApps.Metro.Samples/MahApps.Metro.Caliburn.Demo · high confidence
Demo application updated to .NET 6 with modernized controls and flyout behavior
The demo application in the ExampleWindows folder has been upgraded to target .NET 6, introducing nullable reference types and conditional compilation for modern C\# features. The UI has been refreshed to demonstrate the new 'Clean' window style and updated control appearances, including a new DataGrid-based layout for the CleanWindowDemo to better illustrate memory leak scenarios. Flyout interactions have been enhanced with dynamic flyout support, shadow effects, and improved closing behaviors, while the InteropDemo now utilizes WebView2 instead of the legacy WinForms WebBrowser control for modern web integration.
src/MahApps.Metro.Samples/MahApps.Metro.Demo/ExampleWindows · high confidence
Dialogs redefined with new XAML ControlTemplates and style keys
The visual presentation of dialogs (BaseMetroDialog, InputDialog, LoginDialog, MessageDialog, and ProgressDialog) has been completely rewritten using new XAML ControlTemplates and style resources. This change introduces a consistent layout structure across all dialog types, including support for icons, customizable message foreground colors, and specific button styling based on the ColorScheme (e.g., Accented). Users will see updated dialog appearances with new resource keys (e.g., MahApps.Styles.Button.Dialogs) and behaviors such as default button focus handling and password preview toggles in the LoginDialog.
src/MahApps.Metro/Themes/Dialogs · high confidence
Dialogs refactored to support arbitrary content, icons, and input validation
The dialog system has been restructured to allow greater customization and improved usability. The new \BaseMetroDialog\ base class introduces \DialogTop\ and \DialogBottom\ properties, enabling developers to place arbitrary content above and below the main dialog body. A new \CustomDialog\ class allows for fully custom dialog implementations. Existing dialogs now support icons via \Icon\ and \IconTemplate\ properties, and the \InputDialog\ gains a \ValidateInput\ callback in its settings to enforce custom validation rules on user input. Additionally, the \LoginDialog\ now includes a 'Remember' checkbox feature and improved keyboard navigation, while the \DialogCoordinator\ provides a cleaner, context-based API for showing dialogs from view models.
src/MahApps.Metro/Controls/Dialogs · high confidence
HamburgerMenu control refactored with new events, properties, and accessibility bindings
The HamburgerMenu control has been restructured into a partial class to introduce several behavioral and customization improvements. It now exposes dedicated routed events (ItemClick, OptionsItemClick, ItemInvoked, and HamburgerButtonClick) that allow users to handle clicks and cancellations via the Handled property, replacing the previous ItemClick/ItemInvoked behavior. The pane resizing logic has been refined with a new CanResizeOpenPane property (defaulting to false) and a CoerceValueCallback to correctly enforce MinimumOpenPaneLength and MaximumOpenPaneLength bounds. Additionally, the hamburger button and options menu are now fully customizable via new dependency properties (HamburgerWidth, HamburgerHeight, HamburgerButtonStyle, HamburgerButtonTemplate, OptionsItemsSource, etc.), and accessibility is improved by binding AutomationProperties (Name, HelpText) directly to the menu items in the new HamburgerMenuListBox.
src/MahApps.Metro/Controls/HamburgerMenu · high confidence
Introduce MEF-based service locator for the demo application
The demo application now includes a concrete service locator implementation using Managed Extensibility Framework (MEF). A new \IServiceLocator\ interface and its \MefServiceLocator\ implementation have been added to the Services folder, allowing the demo to resolve dependencies via MEF exports rather than relying on external or implicit resolution mechanisms.
src/MahApps.Metro.Samples/MahApps.Metro.Caliburn.Demo/Services · high confidence
Introduction of MahAppsLibraryThemeProvider for theme resource mapping
A new MahAppsLibraryThemeProvider class has been added to the Theming namespace, inheriting from ControlzEx's LibraryThemeProvider. This component bridges MahApps.Metro with the ControlzEx theming engine by mapping runtime color values (such as AccentBase, Accent, Highlight, and IdealForeground) into specific MahApps color scheme keys, enabling the application to utilize these standardized theme resources.
src/MahApps.Metro/Theming · high confidence
Introduction of a new theme generation system with WinUI-style color definitions
The MahApps.Metro theme infrastructure has been restructured to support a new, generator-based approach for creating themes. This change introduces \GeneratorParameters.json\ and \Theme.Template.xaml\ in the \src/MahApps.Metro/Styles/Themes\ directory, which define the base color schemes (Dark and Light) and a comprehensive set of brush resources. The new system aligns the internal color naming and structure with WinUI standards (e.g., \MahApps.Colors.WinUI.\*\), providing a more consistent and maintainable foundation for theme generation and customization.
src/MahApps.Metro/Styles/Themes · high confidence
MahApps.Metro now replaces ControlzEx P/Invoke calls with CsWin32-generated code
The library has removed its dependency on ControlzEx for native Windows API interactions, replacing them with code generated by the Microsoft.Windows.CsWin32 source generator. This change introduces new internal helpers (WinApiHelper, PInvokeExtensions) and configuration files (NativeMethods.json, NativeMethods.txt) to manage P/Invoke calls directly. For users, this is a transparent internal refactor that maintains existing window placement and UI behavior while modernizing the underlying native interop implementation.
src/MahApps.Metro · high confidence
New BooleanBoxes utility for optimized boolean boxing
A new BooleanBoxes static class has been added to the ValueBoxes namespace to improve performance when boxing boolean values for dependency properties. It provides cached static instances for true and false values and exposes Box methods for both non-nullable and nullable booleans, allowing the library to reuse boxed objects instead of creating new ones on every access.
src/MahApps.Metro/ValueBoxes · high confidence
New WPF Actions for closing Flyouts and TabItems
This change introduces new action classes in the \MahApps.Metro.Actions\ namespace, specifically \CloseFlyoutAction\ and \CloseTabItemAction\, which allow users to close Flyouts and TabItems via command bindings. These new actions are built on a refactored \CommandTriggerAction\ base class that now relies on \Microsoft.Xaml.Behaviors.Wpf\ instead of the legacy \System.Windows.Interactivity\, ensuring better compatibility and performance for WPF behaviors.
src/MahApps.Metro/Actions · high confidence
New Windows 10 and WinUI control styles for Buttons, Calendar, and CheckBox
The \src/MahApps.Metro/Styles\ directory now includes dedicated resource dictionaries for Buttons, Calendar, and CheckBox that implement the modern Windows 10 and WinUI visual designs. For Buttons, the new \MahApps.Styles.Button.Win10\ style introduces a distinct bottom edge to lift the control off the page, while \MahApps.Styles.Button.Flat\ provides a borderless alternative; both support customizable corner radii via the \ControlsHelper.CornerRadius\ attached property. The Calendar style (\MahApps.Styles.CalendarDayButton\) updates the day cell visuals to match the Windows 10 aesthetic, and the CheckBox style (\MahApps.Styles.CheckBox\) adopts the new rounded checkmark glyph and background colors. These changes allow users to adopt the latest Windows design language for these core controls.
src/MahApps.Metro/Styles · high confidence
Removal of legacy global style and color resource dictionaries
The global \Colours.xaml\ and \Controls.xaml\ resource dictionaries have been removed from the library. This eliminates the previous single-file definitions for base colors, brushes, and implicit control styles (such as Button and ScrollBar), requiring consumers to update their resource merging to use the new modular, theme-specific style files.
MahApps.Metro/Styles · high confidence
Removed legacy assembly metadata and application settings files
The AssemblyInfo.cs, Settings.Designer.cs, and Settings.settings files in the MahApps.Metro.Controls/Properties directory have been deleted. This removes hardcoded assembly metadata (such as version, company, and theme resource locations) and the auto-generated application settings infrastructure from this location, likely as part of a migration to a different build or configuration system.
MahApps.Metro.Controls/Properties, MahApps.Metro/Properties · high confidence
Repository restructuring and build system modernization
The repository has been restructured to use a modern .NET SDK-style project layout, replacing the legacy Visual Studio solution and project files. The build process now relies on Cake scripts and GitVersion for versioning, with CI configured for AppVeyor and GitHub Actions. The project license has been switched to MIT, and standard developer files such as .editorconfig, .gitignore, CODE\_OF\_CONDUCT.md, and NOTICE.md have been added to standardize the development environment and legal compliance.
(repo-wide) · high confidence
SplitView control rewritten with new display modes and resizing support
The SplitView control has been completely rewritten to align with UWP behavior, introducing four display modes (Overlay, Inline, CompactOverlay, CompactInline) and a new GridLengthAnimation for smoother pane transitions. Users can now resize the pane using a dedicated thumb, customize the overlay appearance with a new OverlayBrush property, and cancel pane closing actions via the new PaneClosing event. The control also inherits from ContentControl instead of Control, allowing direct content assignment, and includes improved handling of pane visibility and DataContext propagation.
src/MahApps.Metro/Controls/SplitView · high confidence
Update demo app resource dictionary to use MahApps.Metro pack URIs
The Theme1.xaml resource dictionary in the Caliburn.Demo sample has been updated to reference MahApps.Metro styles using absolute pack URIs (e.g., /MahApps.Metro;component/Styles/Controls.xaml) instead of relative local paths. This change ensures the demo application correctly loads the library's built-in color, font, and theme resources (specifically Light.Crimson) from the MahApps.Metro assembly, rather than relying on local style files that may no longer exist or be maintained in the same location.
src/MahApps.Metro.Samples/MahApps.Metro.Caliburn.Demo/Resources · high confidence
Updated XML namespace definitions and added StaticResourceExtension
The library now registers additional XML namespace definitions for shared resources (including Behaviors, Actions, Converters, and Markup) under the 'mah' prefix, ensuring broader XAML availability. Additionally, a new StaticResourceExtension class has been introduced to support static resource references at XAML load time.
src/MahApps.Metro/Properties · high confidence
Updated flyout demo views to use new MahApps style names
The XAML views in the Caliburn.Demo flyouts have been updated to reflect renamed MahApps styles. Specifically, the circular button style reference has been changed from MahApps.Styles.ButtonBase.Circle to MahApps.Styles.Button.Circle in FlyoutBottomView and FlyoutTopView. Additionally, Flyout1View has been converted to use the Caliburn.Metro.Demo namespace and includes a scrollable list of text boxes, while other flyout views (Left, Top, Bottom, Settings, 2, 3) have been recreated or updated to demonstrate various UI controls like sliders, list views, and settings panels within the demo application.
src/MahApps.Metro.Samples/MahApps.Metro.Caliburn.Demo/Views/Flyouts · medium confidence
Test coverage
Configure STA apartment for NUnit tests; Expanded test coverage for MahApps.Metro controls and styles; Expanded test harness for MahApps.Metro controls; Migrate test suite to NUnit and add test infrastructure; New test helper infrastructure for UI and dispatcher testing.
Dependencies
Migrate to .NET SDK-style projects and centralize dependency management
The project has transitioned from legacy .NET Framework 4.0 project files to modern SDK-style projects using the Microsoft.NET.Sdk.WindowsDesktop. This change introduces Central Package Management via a new Directory.packages.props file, which defines specific versions for key dependencies including ControlzEx 7.0.4, MahApps.Metro.IconPacks 6.2.1, and MaterialDesignThemes 4.9.0. The main library and sample applications now target net9.0-windows, net8.0-windows, net6.0-windows, and net472, replacing the previous single-target framework approach.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Baseline
- First survey — no prior run to compare against. CAI 41.
Lenses
- Code Health 56
- Architecture 97
- Maturity 58
- Readiness 45
- Security 27
Changes since last survey
- 300 commits — 188 feature/other, 112 fixes
By area
- src/MahApps.Metro — 116 commits
- (repo) — 79 commits
- src/MahApps.Metro.Samples — 61 commits
- src/Mahapps.Metro.Tests — 35 commits
- (root) — 5 commits
- .github/workflows — 3 commits
- .signpath/artifact-configuration.xml — 1 commit
Notable commits
- fix: Merge branch 'fix/dialog-tests-hang' into develop
- fix: Merge branch 'fix/hamburger-closed-pane-indicator' into develop
- fix: Merge branch 'fix/invoke-on-a-dead-dispatcher' into develop
- fix: Merge pull request #4605 from MahApps/fix/clip-content-to-border
- fix: Merge pull request #4606 from MahApps/fix/numericupdown-culture-negative-sign
- fix: Merge pull request #4610 from MahApps/fix/numericupdown-paste
- fix: Merge pull request #4612 from MahApps/fix/numericupdown-focus
- fix: Merge pull request #4613 from MahApps/fix/numericupdown-hex-format-back
- fix: Merge pull request #4614 from MahApps/fix/inverted-dialog-theme
- fix: Merge pull request #4616 from MahApps/fix/datagrid-clear-button-commit
- fix: Merge pull request #4617 from MahApps/fix/combobox-editable-automation-name
- fix: Merge pull request #4618 from MahApps/fix/updown-column-type-to-edit
- fix: Merge pull request #4619 from MahApps/fix/expander-arrow-contrast
- fix: Merge pull request #4620 from MahApps/fix/rangeslider-thumb-drift
- fix: Merge pull request #4623 from MahApps/fix/flipview-banner-from-source
- fix: Merge pull request #4624 from MahApps/fix/badged-clipped-in-tab-header
- fix: Merge pull request #4626 from MahApps/fix/timepicker-follows-culture
- fix: Merge pull request #4627 from MahApps/fix/transitioning-keeps-its-views
- fix: Merge pull request #4630 from MahApps/fix/slider-automation-ids
- fix: Merge pull request #4631 from MahApps/fix/flyouts-block-automation-hit-test
- …and 280 more
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
MahApps/MahApps.Metro was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 28 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit c516926e0e8a3080af47486541428da71fa6a44c — the exact code this score is about.
- Scored under rubric-2026.09.16 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-2d9048c36d26.