Release 1.6.0

Thursday, February 15, 2018

As part of this release we had 362 commits which resulted in 153 issues being closed.

Features / Changes / Improvements (most interesting)

  • New: MahApps.Metro.Styles.MetroWatermarkTextBlock style to make it easier to set custom properties like FontFamily or FontSize for all Watermarks.
  • New: Replacing WindowChrome and related things with reference to ControlzEx #3021
  • NumericUpDown
    • New: SnapToMultipleOfInterval property for NumericUpDown which indicates if the NumericUpDown should round the value to the nearest possible interval when the focus moves to another element. #2952 @xxMUROxx
    • New: NumericInputMode property with the new flag enumeration NumericInput (default is NumericInput.All)
    • Mark HasDecimals as obsolete
    • Block scientific input if only numbers allowed
    • Fix: NumericUpDown, HotKeyBox and TimerPickerBase doesn't focus for the first time when the FocusManager will be used.
  • New: Changing popup border thickness and padding for ComboBox via resource keys
    • ComboBoxBorderThemeThickness (default 1)
    • ComboBoxPopupBorderThemeThickness (default 1)
    • ComboBoxPopupBorderThemePadding (default 1)
  • New: Changing the header padding for GroupBox and Expander via resource keys
    • GroupBoxHeaderThemePadding (default 4)
    • ExpanderHeaderThemePadding (default 2)
    • ExpanderToggleButtonEllipseThemeSize (default 18)
  • New: Badged control has now a different look when disabled. thx @xxMUROxx
    • New brush for light and dark themes: MahApps.Metro.Brushes.Badged.DisabledBackgroundBrush
  • Watermark
    • Use TextBoxHelper.Watermark for HotKeyBox instead own DependencyProperty (marked as obsolete).
    • Allow TextBoxHelper.AutoWatermark for HotKey DependencyProperty of HotKeyBox.
    • New: TextBoxHelper.WatermarkTrimming attached property to set the text trimming behavior to employ when (floating) watermark overflows the content area. thx to @amkuchta
    • New: TextBoxHelper.WatermarkWrapping attached property (only for TextBox) to set how the watermark should wrap text. Default is binded to TextWrapping property. thx to @amkuchta
  • VS Theme
    • New: StandardGroupBox style
    • New: StandardExpander style
  • TabControlHelper
    • New: TabControlHelper.CloseButtonEnabled attached property to show / hide the close button (default is true).
    • New: TabControlHelper.CloseTabCommand attached property which executes if the TabItem will be closed.
    • New: TabControlHelper.CloseTabCommandParameter attached property which will be passed to the CloseTabCommand.
  • New: Add TextBoxHelper.ButtonsAlignment support for PasswordBox styles #3074 @waleswood
  • New: MetroHeader control which can contains any other content and can display a header on top of this content.
    2017-10-11_15h58_35 2017-10-11_16h04_32
      <Controls:MetroHeader Margin="2" Header="TextBox Header">
                  <StackPanel VerticalAlignment="Center" Orientation="Horizontal">
                      <iconPacks:PackIconMaterial VerticalAlignment="Center" Kind="FaceProfile" />
                      <TextBlock Margin="2 0 0 0"
                                 Text="{Binding}" />
          <TextBox Text="Enabled" />
  • New: ScrollViewerHelper class
    • New: IsHorizontalScrollWheelEnabled attached property. If it's set to true and a horizontal ScrollBar is visible then the mouse wheel scrolls to left and right.
    • Change: VerticalScrollBarOnLeftSide attached property from ScrollBarHelper to ScrollViewerHelper. ScrollBarHelper is now marked as obsolete.
  • New: Use FlatButtonForegroundBrush in the new MahApps.Metro.Styles.FlatButtonFocusVisualStyle which is used now for MetroFlatButton and MetroFlatToggleButton
  • PasswordBoxHelper
    • New: RevealButtonContent and RevealButtonContentTemplate attached properties
    • Set the DefaultRevealButtonIcon ContentControl to RevealButtonContent attached property
  • Change: Use the original Win 10 close button style
    • New: MahApps.Metro.Styles.WindowButton.Close.Light.Win10 and MahApps.Metro.Styles.WindowButton.Close.Dark.Win10 styles
  • New: ItemHelper class with some Brush attached properties for mouse interaction. These properties can be used with HamburgerMenuItem, ListBoxItem, ListViewItem, TreeViewItem and ComboBoxItem.
    • ItemHelper.ActiveSelectionBackgroundBrush default AccentColorBrush
    • ItemHelper.ActiveSelectionForegroundBrush default AccentSelectedColorBrush
    • ItemHelper.DisabledBackgroundBrush default x:Null
    • ItemHelper.DisabledForegroundBrush default GrayNormalBrush
    • ItemHelper.DisabledSelectedBackgroundBrush default GrayBrush7
    • ItemHelper.DisabledSelectedForegroundBrush default AccentSelectedColorBrush
    • ItemHelper.HoverBackgroundBrush default AccentColorBrush3
    • ItemHelper.HoverSelectedBackgroundBrush default AccentColorBrush
    • ItemHelper.SelectedBackgroundBrush default AccentColorBrush2
    • ItemHelper.SelectedForegroundBrush default AccentSelectedColorBrush
  • ToggleSwitch
    • New: ContentPadding dependency property to change the padding of the inner content in an easy way.
  • HamburgerMenu
    • Renaming (internal used styles):
      • HamburgerListBoxItemStyle -> HamburgerMenuItemStyle
      • HamburgerListBoxStyle -> HamburgerMenuListStyle
    • Revert back to UWPCommunityToolkit style (update template to keep options visible)
      • Move template to HamburgerMenuTemplate resource dictionary
      • Add margins
      • Vertically stretch the menu items of the hamburger menu
    • Change inner ListBox scrolling (to CanContentScroll)
    • New: Add ItemContainerStyle and OptionsItemContainerStyle properties. This makes it easier to change the inner styles for the items (and option items)
    • MinHeight of the menu items should be 0
    • Change: HamburgerMenuImageItem: Downgrade thumbnail property from BitmapImage to subclass ImageSource
    • New: Introduce ItemInvoked event (as an alternative to ItemClick and OptionsItemClick)
    • New: SelectionIndicator (rectangle) which can be enabled with the new ShowSelectionIndicator dependency property
      • New: resource key HamburgerMenuSelectionIndicatorThemeWidth default 6
      • New: resource key HamburgerMenuSelectionIndicatorThemeHeight default 24
    • Improved item FocusVisualStyle
      • Add new (readonly) ItemFocusVisualStyle dependency property which will be re-created if one of these properties are changed: OpenPaneLength, CompactPaneLength and IsPaneOpen. Default template is HamburgerMenuItemFocusVisualTemplate.
      • This FocusVisualStyle can be override at the HamburgerMenuItem style by setting the FocusVisualStyle property.
    • Change: Reorganize Hamburger sample: shows now Default style, Creators Update style and a sample with the MaterialDesignInXaml Ripple control
    • Fix: Set a selected Item only if there is no content set
    • Add HamburgerMenu resources to Control styles to allow style manipulation and fix binding expression infos
    • Fix: PanePlacement handling for right aligned
    • New: Add ToolTip DependencyProperty for HamburgerMenuItem mahapps_hamburger_right
  • Dialogs
    • New: Create new style for Dialogs MahApps.Metro.Styles.MetroDialog and set this as default
    • Add BaseMetroDialog resources to Control styles to allow easier dialog style manipulation
    • Fix: Do not load all MahApps styles in code behind again (this is not necessary anymore, since it's now at Style level too)
    • Fix: Inverted Dialogs theme (the background wasn't correct)
    • New: Add ProgressDialogController.SetProgressBarForegroundBrush(Brush) so that you can customize a progress dialog's progress bar foreground Brush.
  • MetroWindow (Dialogs)
    • Add a new (readonly) IsAnyDialogOpen dependency property. This property will be updated if a dialog is shown or not.
    • New: OwnerCanCloseWithDialog property at MetroDialogSettings which can be used to handle how the owner of the dialog can be closed.
    • New: IsCloseButtonEnabledWithDialog property at MetroWindow which indicates if the close button should be enabled or not if a dialog is shown.
    • The HandleOverlayOnHide and HandleOverlayOnShow methods sets the IsCloseButtonEnabledWithDialogPropertyKey and restores focus if needed
    • New: OverlayFadeIn and OverlayFadeOut properties to set/override the overlay fade in/out Storyboards which are used for the Dialogs
    • Fix: Fade in and out animation was wrong if no duration exists
    • Fix: HideMetroDialogAsync fails sometimes to close dialog (async call order)
  • New: Win10 Slider style: MahApps.Metro.Styles.Slider.Win10
    • Control template: MahApps.Metro.Styles.Slider.HorizontalTemplate.Win10, MahApps.Metro.Styles.Slider.VerticalTemplate.Win10
    • RepeatButton: MahApps.Metro.Styles.Slider.HorizontalTrack.Win10, MahApps.Metro.Styles.Slider.VerticalTrack.Win10
    • Thumb: MahApps.Metro.Styles.Slider.Thumb.Win10
  • New: Normal Slider style: MahApps.Metro.Styles.Slider (mark old as obsolete)
    • Control template: MahApps.Metro.Styles.Slider.HorizontalTemplate, MahApps.Metro.Styles.Slider.VerticalTemplate
    • RepeatButton: MahApps.Metro.Styles.Slider.HorizontalTrack, MahApps.Metro.Styles.Slider.VerticalTrack
    • Thumb: MahApps.Metro.Styles.Slider.Thumb
  • New: Win10 RangeSlider style: MahApps.Metro.Styles.RangeSlider.Win10
    • Control template: MahApps.Metro.Styles.RangeSlider.HorizontalTemplate.Win10, MahApps.Metro.Styles.RangeSlider.VerticalTemplate.Win10
    • RepeatButton: MahApps.Metro.Styles.Slider.HorizontalTrack.Win10, MahApps.Metro.Styles.Slider.VerticalTrack.Win10
    • Thumb: MahApps.Metro.Styles.Slider.Thumb.Win10, MahApps.Metro.Styles.RangeSlider.HorizontalMiddleThumb.Win10, MahApps.Metro.Styles.RangeSlider.VerticalMiddleThumb.Win10
  • New: Normal RangeSlider style: MahApps.Metro.Styles.RangeSlider
    • Use SliderHelper brush properties also for RangeSlider
    • Thump styles for the middle part: MahApps.Metro.Styles.RangeSlider.HorizontalMiddleThumb, MahApps.Metro.Styles.RangeSlider.VerticalMiddleThumb
    • Use MetroThumb instead Thumb
    • Set ReservedSpace for all TickBar controls instead Margin
  • SliderHelper: Add new attached properties for all possible Brushes
    • Allow SliderHelper.EnableMouseWheel and SliderHelper.ChangeValueBy for RangeSlider too.
    • Default Win10 Slider brushes
      • SliderHelper.ThumbFillBrush default AccentBaseColorBrush
      • SliderHelper.ThumbFillHoverBrush default GrayBrush3
      • SliderHelper.ThumbFillPressedBrush default AccentBaseColorBrush
      • SliderHelper.ThumbFillDisabledBrush default GrayBrush1
      • SliderHelper.TrackFillBrush default GrayBrush2
      • SliderHelper.TrackFillHoverBrush default AccentBaseColorBrush
      • SliderHelper.TrackFillPressedBrush default GrayBrush6
      • SliderHelper.TrackFillDisabledBrush default GrayBrush3
      • SliderHelper.TrackValueFillBrush default AccentBaseColorBrush
      • SliderHelper.TrackValueFillHoverBrush default GrayBrush6
      • SliderHelper.TrackValueFillPressedBrush default GrayBrush6
      • SliderHelper.TrackValueFillDisabledBrush default GrayBrush6
    • Default Slider brushes
      • SliderHelper.ThumbFillBrush default GrayBrush2
      • SliderHelper.ThumbFillHoverBrush default GrayBrush3
      • SliderHelper.ThumbFillPressedBrush default AccentColorBrush
      • SliderHelper.ThumbFillDisabledBrush default GrayBrush5
      • SliderHelper.TrackFillBrush default GrayBrush3
      • SliderHelper.TrackFillHoverBrush default AccentColorBrush
      • SliderHelper.TrackFillPressedBrush default GrayBrush2
      • SliderHelper.TrackFillDisabledBrush default GrayBrush3
      • SliderHelper.TrackValueFillBrush default AccentColorBrush
      • SliderHelper.TrackValueFillHoverBrush default GrayBrush6
      • SliderHelper.TrackValueFillPressedBrush default GrayBrush6
      • SliderHelper.TrackValueFillDisabledBrush default GrayBrush6
  • DatePicker
    • New: Add new dependency property ControlsHelper.IsReadOnly. This property sets the IsReadOnly property on the inner TextBox and the IsEnabled on the inner popup button.

Strong naming

MahApps will no longer be strong-named beginning with this version. #3029


Strong-named assemblies are only useful in some rare scenarios. If you need strong-named assembly then you can compile the source by yourself ore use the Strong Namer from Daniel Plaisted @dsplaisted or Strong-Name Signer from Werner van Deventer @brutaldev.

More informations about the reason of this decision can be found here:

Commits without PRs/Issues

  • 69afa65e Adopt SpellCheck.IsEnabled changes from MaterialDesignInXamlToolkit @ButchersBoy #650 Removes the extra hidden classes and enables flexible style changes, it's more WPF now.
  • 15bbe66d Inherit FontFamily and FontSize for CalendarDayButton and CalendarButton from Calendar.
  • 2c97fd4e Fix: Brushes for MetroProgressBar
  • 5c4471c3 Use DynamicResource for all brushes and freeze it too.
  • 8c0f893f Fix: MetroProgressBar does not work inside ControlTemplate
  • c900c5bd Check for RootVisual in GlowWindowBehavior
  • ad16dc30 ResizeBorderThickness must also be set to 0 on maximize
  • 6943cc92 Use PropertyChangeNotifier from ControlzEx
  • 7ea7a7c7 Removing trigger for ResizeBorderThickness as it's handled by ControlzEx
  • 44c23637 Fix possible System.Windows.Data warning for ComboBoxItem, if a ComboBox is inside a ContentControl.
  • edc34679 FlipView: Bind ItemStringFormat to ContentStringFormat
  • 2c1c692b Fix not updating the text of TimePicker and DateTimePicker after changing the culture
  • e54aaaf1 Use DialogTitleFontSize and DialogMessageFontSize via DynamicResource at the base MetroDialog style
  • 9071379b Closing main demo was wrong (TaskCanceledException)
  • 4253d89f Set HorizontalScrollBarVisibility and VerticalScrollBarVisibility for HotKeyBox and NumericUpdDown to Hidden, cause the inner TextBox has this as default too
  • 713cb69b Slider: remove linear gradient brush from horizontal and vertical track value style. RangeSlider: fix margin of the middle thumb.


  • #3185 Fix for (GH-3039) NumericUpDown
  • #3181 Reorganize the Sliders and Progress examples with some fixes...
  • #3176 (GH-3175) MetroWindow: use BorderThickness as Margin for inner window content
  • #3175 Window contents cut off by 1px
  • #3171 NumericUpdOwn LostFocus text validation
  • #3168 NumericUpDown.StringFormat not working via Code behind
  • #3166 Bug On NumericUpDown
  • #3162 WIP MetroWindow: OverlayFadeIn / OverlayFadeOut
  • #3161 HamburgerMenu: correct PanePlacement handling
  • #3160 Fix not focusing custom controls via FocusManager
  • #3159 MetroThumbContentControl: Catch possible exception and trace it
  • #3156 Fixed issue #3155 "GridViewColumnHeader uses twice the padding"!
  • #3155 GridViewColumnHeader uses twice the padding
  • #3152 Fix overriding (Metro)TabItem controltemplate/style
  • #3150 Templated MetroDialog alignment
  • #3148 Fix loaded content at HamburgerMenu
  • #3146 Fix for WindowsSettingBehaviour and possible AssociatedObject Nullreference
  • #3145 Fix for #3143 Flyout's header not binding to XmlProvider
  • #3143 Flyout's header not binding to XmlProvider
  • #3142 Fix Dialogs Resource handling
  • #3140 System.InvalidOperationException: Ten element Visual nie jest połączony z PresentationSource.
  • #3131 WindowSettings.SaveWindowState ConfigurationErrorsException
  • #3129 Override MetroTabItem controltemplate with close button
  • #3126 Fix MultiFrameImage: frame selection in NoScaleSmallerFrame mode
  • #3121 (#3101) Fix disabled Foreground for MahApps.Metro.Styles.MetroCircleButtonStyle
  • #3120 (#3109) Fix NullReferenceException when using Flyout with theme
  • #3119 (#3118) Fix for dark theme FlatButton FocusVisualStyle Foreground
  • #3118 Fix for dark theme flat button FocusVisualStyle
  • #3110 Fixes 3107.
  • #3109 NullReferenceException When using Flyout With Theme
  • #3107 Object reference not set to an instance of an object.
  • #3106 HamburgerMenu control: still just a demo?
  • #3104 SplitView doesn't work with Caliburn.Micro ActivateItem(xxx)
  • #3101 MetroCircleButtonStyle not fading inner icon when button is disabled
  • #3091 Fix #3010 IsTabStop for HamburgerMenu
  • #3090 Fix NumericUpDown Issue #3086
  • #3089 Setting HamburgerMenu.SelectedIndex or Item cause the lost of its content
  • #3086 NumericUpDown CornerRadius Border issue.
  • #3082 Fix wrong caret index for revealed PasswordBox
  • #3079 Incorporate Grey Color Into BaseLight & BaseDark
  • #3078 Not All "Grey" Values Are Set in BaseLight/BaseDark
  • #3076 Fix for Floating watermak field doesn't fit according to floating watermark FontSize
  • #3068 AutoWatermark attached property has no effect on HotKeyBox
  • #3067 Right aligned floating Watermark goes behind clear button
  • #3066 Don't catch TextChangedEvent in NumericUpDown
  • #3060 Fix for TextBox GPU memory leak
  • #3054 WindowsSettingBehaviour broken after using ControlzEx
  • #3050 Allow TimePicker to parse times with an AM/PM.
  • #3049 TimePicker fails to parse times with an AM/PM.
  • #3046 Update TextBoxHelper.cs
  • #3045 Clicking on the "X" button added by TextBoxHelper.ClearTextButton does not clear the databinding target
  • #3043 Width parse error
  • #3042 NumericUpDown Focus doesn't work if set through FocusManager
  • #3039 NumericUpDown
  • #3038 Update from Version 0.13.1 to a higher one
  • #3034 GlowBrush="" is causing a ComponentModel Exception in UpdateCore
  • #3031 NumericUpDown do not fire at certain conditions
  • #3028 SaveWindowPosition causes application to crash
  • #3026 NumericUpDown didn't update when lost focus, StringFormat has no effect to the content string
  • #3025 ComboBox popup border thickness problem
  • #3023 Custom Dialog Theme Issue
  • #3022 HideMetroDialogAsync sometimes fails to close dialog
  • #3017 SplitButton with custom ItemTemplate - Source change does not always update layout
  • #3013 ListView (ListBox) - Undeletable Top Padding
  • #3010 HamburgerMenu ignores Focusable and IsHitTestVisible properties
  • #3009 Floating Watermak field doesn't fit according FontSize
  • #3001 DatePicker padding do not work
  • #3000 Empty Watermark leaves blank border on date time controls
  • #2999 Using OrdinalIgnoreCase instead of InvariantCultureIgnoreCase in ThemeManager
  • #2997 [Fix] WPF-BindingLeak: Bind to property of non INotifyPropertyChanged without using BindingMode.OneTime
  • #2996 Mahapps window steals focus
  • #2992 Fixing a few issues in ThemeManager
  • #2991 Enable LayoutTransform and RenderTransform on MetroWindow
  • #2990 TextBox memory leak
  • #2985 TimePicker 24hour format selection
  • #2983 NumericUpDown Internal Text Doesn't Update When Expected
  • #2972 ThemeManager.ChangeAppStyle from separate thread doesn't take effect every 4th time
  • #2966 [Only visual] PasswordBox bug
  • #2963 WindowCommands with ItemTemplateSelector not working
  • #2962 MetroStatusBar Style and Prism RegionManager
  • #2958 NumericUpDown: If HasDecimals is set to false and StringFormat was bound, HasDecimals will be set to true after unloading and loading the control
  • #2956 property ToolTip of ProgressRing does not work
  • #2954 add contentstringformat to contentpresenter in controls.radiobutton.xaml
  • #2953 Can't run MahApps 1.5.0 Caliburn Demos on VS2015
  • #2951 Window with showactivated=false and sizetocontent=WidthAndHeight is activated in Mahapps.Metro v1.5
  • #2938 DataGridNumericUpDownColumn StringFormat binding
  • #2937 Fuzzy button outline
  • #2933 Hamburguer menu issue
  • #2926 IsPaneOpen property in Hamburger Menu is not properly set after opening/closing pane
  • #2813 ControlTemplate and Style are not applied to the CustomDialog
  • #2806 Async Content Dialog is not always blocked
  • #2753 Race condition in ShowMetroDialogAsync/HideMetroDialogAsync
  • #2745 Why change App Style in Flyout if the theme Adapt is chosen?
  • #2731 Keep BorderThickness on maximize if necessary
  • #2622 DateTimePicker - Format
  • #2468 DialogCoordinator.ShowMessageAsync Button Accent
  • #2463 [accessibility] Dialogs and screen reader
  • #1678 Pivot control does not work with BaseDark style


  • #3178 Add ability to set progress dialog progress bar brush color
  • #3177 HamburgerMenuItem ToolTip Implementation
  • #3170 DatePicker IsReadOnly
  • #3165 Add new Win10 Slider style
  • #3158 NumericUpDown: Add a new property to handle the allowed numeric input
  • #3153 WIP Handle CloseButton together with ShowDialogsOverTitleBar
  • #3151 New IsAnyDialogVisible dependency property for MetroWindow
  • #3149 Add FlyoutAutomationPeer for better CodedUI support
  • #3147 Add basic MetroDialog AutomationPeers
  • #3134 HamburgerMenu and Item selection/hover brush improvements
  • #3133 Use the original Win 10 close button style
  • #3122 (#3105) Allow to change the RevealButton Icon in the PasswordBox
  • #3087 New ScrollViewerHelper class with IsHorizontalScrollWheelEnabled
  • #3077 Add new MetroHeader control
  • #3074 add "PasswordBox" support "ButtonsAlignment"
  • #3073 VS Theme TabItem enhancements
  • #3072 Add missing VS StandardExpander style
  • #3071 Add missing VS GroupBox style
  • #3069 Watermark fixes and improvements
  • #3021 Replacing WindowChrome and related things with reference to ControlzEx
  • #3014 Resolved #2619
  • #2975 Creators Hamburger Menu
  • #2935 It is now possibile to set FontFamily to DateTimePicker.
  • #2930 DisplayFormat in DateTimePicker and TimePicker
  • #2467 Added Canceled Result To MessageDialogResut
  • #2423 Added the habilitiy to block the use of the scientific notation 'e'.

Feature Requests

  • #3169 HamburgerMenuIconItem ToolTip
  • #3105 [Enhancement] Allow to change the Reveal Icon in the PasswordBox
  • #3100 HorizontalAlignment of BaseMetroDialog content
  • #3084 MetroAnimatedSingleRowTabControl Scrollbar issue
  • #3070 VS GroupBox style
  • #2979 [Request]Win 10 Fluent Design Hamburger Menu
  • #2977 Badge must have a different look when disabled
  • #2952 NumericUpDown snap to interval
  • #2931 [Request]Win 10 Creators Update Hamburger Menu
  • #2889 [Feature Request] Watermark Wrapping
  • #2884 [Feature Request] Watermark Trimming
  • #2882 Titlebar Close command does not work with ShowDialogsOverTitleBar=False
  • #2879 [Feature request] Ticks property for the RangeSlider
  • #2825 Shorten Dialog Show/Hide animation duration
  • #2527 Coded UI Testing in not working Properly on this UI
  • #2491 Question: Changing font style for watermark
  • #2422 Added the habilitiy to block the use of the scientific notation 'e' on NumericUpDown.
  • #1731 VS Theme TabItem Question
  • #957 Expander icon in VS theme

Where to get it

You can download this release from MahApps.Metro