MahApps.Metro 1.6.0
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.MetroWatermarkTextBlockstyle to make it easier to set custom properties likeFontFamilyorFontSizefor all Watermarks. - New: Replacing
WindowChromeand related things with reference toControlzEx#3021 NumericUpDown- New:
SnapToMultipleOfIntervalproperty forNumericUpDownwhich indicates if theNumericUpDownshould round the value to the nearest possible interval when the focus moves to another element. #2952 @xxMUROxx - New:
NumericInputModeproperty with the new flag enumerationNumericInput(default isNumericInput.All) - Mark
HasDecimalsas obsolete - Block scientific input if only numbers allowed
- Fix:
NumericUpDown,HotKeyBoxandTimerPickerBasedoesn't focus for the first time when the FocusManager will be used.
- New:
- New: Changing popup border thickness and padding for
ComboBoxvia resource keysComboBoxBorderThemeThickness(default 1)ComboBoxPopupBorderThemeThickness(default 1)ComboBoxPopupBorderThemePadding(default 1)
- New: Changing the header padding for
GroupBoxandExpandervia resource keysGroupBoxHeaderThemePadding(default 4)ExpanderHeaderThemePadding(default 2)ExpanderToggleButtonEllipseThemeSize(default 18)
- New:
Badgedcontrol has now a different look when disabled. thx @xxMUROxx- New brush for light and dark themes:
MahApps.Metro.Brushes.Badged.DisabledBackgroundBrush
- New brush for light and dark themes:
Watermark- Use
TextBoxHelper.WatermarkforHotKeyBoxinstead own DependencyProperty (marked as obsolete). - Allow
TextBoxHelper.AutoWatermarkforHotKeyDependencyProperty ofHotKeyBox. - New:
TextBoxHelper.WatermarkTrimmingattached property to set the text trimming behavior to employ when (floating) watermark overflows the content area. thx to @amkuchta - New:
TextBoxHelper.WatermarkWrappingattached property (only forTextBox) to set how the watermark should wrap text. Default is binded toTextWrappingproperty. thx to @amkuchta
- Use
VS Theme- New:
StandardGroupBoxstyle - New:
StandardExpanderstyle
- New:
TabControlHelper- New:
TabControlHelper.CloseButtonEnabledattached property to show / hide the close button (default is true). - New:
TabControlHelper.CloseTabCommandattached property which executes if theTabItemwill be closed. - New:
TabControlHelper.CloseTabCommandParameterattached property which will be passed to theCloseTabCommand.
- New:
- New: Add
TextBoxHelper.ButtonsAlignmentsupport forPasswordBoxstyles #3074 @waleswood - New:
MetroHeadercontrol which can contains any other content and can display a header on top of this content.

<Controls:MetroHeader Margin="2" Header="TextBox Header"> <Controls:MetroHeader.HeaderTemplate> <DataTemplate> <StackPanel VerticalAlignment="Center" Orientation="Horizontal"> <iconPacks:PackIconMaterial VerticalAlignment="Center" Kind="FaceProfile" /> <TextBlock Margin="2 0 0 0" VerticalAlignment="Center" Text="{Binding}" /> </StackPanel> </DataTemplate> </Controls:MetroHeader.HeaderTemplate> <TextBox Text="Enabled" /> </Controls:MetroHeader> - New:
ScrollViewerHelperclass- New:
IsHorizontalScrollWheelEnabledattached property. If it's set to true and a horizontalScrollBaris visible then the mouse wheel scrolls to left and right. - Change:
VerticalScrollBarOnLeftSideattached property fromScrollBarHelpertoScrollViewerHelper. ScrollBarHelper is now marked as obsolete.
- New:
- New: Use
FlatButtonForegroundBrushin the newMahApps.Metro.Styles.FlatButtonFocusVisualStylewhich is used now forMetroFlatButtonandMetroFlatToggleButton PasswordBoxHelper- New:
RevealButtonContentandRevealButtonContentTemplateattached properties - Set the
DefaultRevealButtonIconContentControl toRevealButtonContentattached property
- New:
- Change: Use the original Win 10 close button style
- New:
ItemHelperclass with someBrushattached properties for mouse interaction. These properties can be used withHamburgerMenuItem,ListBoxItem,ListViewItem,TreeViewItemandComboBoxItem.ItemHelper.ActiveSelectionBackgroundBrushdefaultAccentColorBrushItemHelper.ActiveSelectionForegroundBrushdefaultAccentSelectedColorBrushItemHelper.DisabledBackgroundBrushdefaultx:NullItemHelper.DisabledForegroundBrushdefaultGrayNormalBrushItemHelper.DisabledSelectedBackgroundBrushdefaultGrayBrush7ItemHelper.DisabledSelectedForegroundBrushdefaultAccentSelectedColorBrushItemHelper.HoverBackgroundBrushdefaultAccentColorBrush3ItemHelper.HoverSelectedBackgroundBrushdefaultAccentColorBrushItemHelper.SelectedBackgroundBrushdefaultAccentColorBrush2ItemHelper.SelectedForegroundBrushdefaultAccentSelectedColorBrush
ToggleSwitch- New:
ContentPaddingdependency property to change the padding of the inner content in an easy way.
- New:
HamburgerMenu- Renaming (internal used styles):
HamburgerListBoxItemStyle->HamburgerMenuItemStyleHamburgerListBoxStyle->HamburgerMenuListStyle
- Revert back to
UWPCommunityToolkitstyle (update template to keep options visible)- Move template to
HamburgerMenuTemplateresource dictionary - Add margins
- Vertically stretch the menu items of the hamburger menu
- Move template to
- Change inner ListBox scrolling (to CanContentScroll)
- New: Add
ItemContainerStyleandOptionsItemContainerStyleproperties. 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 fromBitmapImageto subclassImageSource - New: Introduce
ItemInvokedevent (as an alternative toItemClickandOptionsItemClick) - New:
SelectionIndicator(rectangle) which can be enabled with the newShowSelectionIndicatordependency property- New: resource key
HamburgerMenuSelectionIndicatorThemeWidthdefault6 - New: resource key
HamburgerMenuSelectionIndicatorThemeHeightdefault24
- New: resource key
- Improved item
FocusVisualStyle- Add new (readonly)
ItemFocusVisualStyledependency property which will be re-created if one of these properties are changed:OpenPaneLength,CompactPaneLengthandIsPaneOpen. Default template isHamburgerMenuItemFocusVisualTemplate. - This FocusVisualStyle can be override at the
HamburgerMenuItemstyle by setting theFocusVisualStyleproperty.
- Add new (readonly)
- 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
HamburgerMenuresources to Control styles to allow style manipulation and fix binding expression infos - Fix:
PanePlacementhandling for right aligned - New: Add
ToolTipDependencyPropertyforHamburgerMenuItem





- Renaming (internal used styles):
Dialogs- New: Create new style for Dialogs
MahApps.Metro.Styles.MetroDialogand set this as default - Add
BaseMetroDialogresources 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.
- New: Create new style for Dialogs
MetroWindow(Dialogs)- Add a new (readonly)
IsAnyDialogOpendependency property. This property will be updated if a dialog is shown or not. - New:
OwnerCanCloseWithDialogproperty atMetroDialogSettingswhich can be used to handle how the owner of the dialog can be closed. - New:
IsCloseButtonEnabledWithDialogproperty atMetroWindowwhich indicates if the close button should be enabled or not if a dialog is shown. - The
HandleOverlayOnHideandHandleOverlayOnShowmethods sets theIsCloseButtonEnabledWithDialogPropertyKeyand restores focus if needed - New:
OverlayFadeInandOverlayFadeOutproperties to set/override the overlay fade in/out Storyboards which are used for theDialogs - Fix: Fade in and out animation was wrong if no duration exists
- Fix:
HideMetroDialogAsyncfails sometimes to close dialog (async call order)
- Add a new (readonly)
- New: Win10
Sliderstyle:MahApps.Metro.Styles.Slider.Win10 - New: Normal
Sliderstyle: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
- Control template:
- New: Win10
RangeSliderstyle: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

- Control template:
- New: Normal
RangeSliderstyle:MahApps.Metro.Styles.RangeSlider- Use
SliderHelperbrush properties also forRangeSlider - Thump styles for the middle part:
MahApps.Metro.Styles.RangeSlider.HorizontalMiddleThumb,MahApps.Metro.Styles.RangeSlider.VerticalMiddleThumb - Use
MetroThumbinsteadThumb - Set
ReservedSpacefor allTickBarcontrols insteadMargin
- Use
SliderHelper: Add new attached properties for all possibleBrushes- Allow
SliderHelper.EnableMouseWheelandSliderHelper.ChangeValueByforRangeSlidertoo. - Default Win10
SliderbrushesSliderHelper.ThumbFillBrushdefaultAccentBaseColorBrushSliderHelper.ThumbFillHoverBrushdefaultGrayBrush3SliderHelper.ThumbFillPressedBrushdefaultAccentBaseColorBrushSliderHelper.ThumbFillDisabledBrushdefaultGrayBrush1SliderHelper.TrackFillBrushdefaultGrayBrush2SliderHelper.TrackFillHoverBrushdefaultAccentBaseColorBrushSliderHelper.TrackFillPressedBrushdefaultGrayBrush6SliderHelper.TrackFillDisabledBrushdefaultGrayBrush3SliderHelper.TrackValueFillBrushdefaultAccentBaseColorBrushSliderHelper.TrackValueFillHoverBrushdefaultGrayBrush6SliderHelper.TrackValueFillPressedBrushdefaultGrayBrush6SliderHelper.TrackValueFillDisabledBrushdefaultGrayBrush6
- Default
SliderbrushesSliderHelper.ThumbFillBrushdefaultGrayBrush2SliderHelper.ThumbFillHoverBrushdefaultGrayBrush3SliderHelper.ThumbFillPressedBrushdefaultAccentColorBrushSliderHelper.ThumbFillDisabledBrushdefaultGrayBrush5SliderHelper.TrackFillBrushdefaultGrayBrush3SliderHelper.TrackFillHoverBrushdefaultAccentColorBrushSliderHelper.TrackFillPressedBrushdefaultGrayBrush2SliderHelper.TrackFillDisabledBrushdefaultGrayBrush3SliderHelper.TrackValueFillBrushdefaultAccentColorBrushSliderHelper.TrackValueFillHoverBrushdefaultGrayBrush6SliderHelper.TrackValueFillPressedBrushdefaultGrayBrush6SliderHelper.TrackValueFillDisabledBrushdefaultGrayBrush6
- Allow
DatePicker- New: Add new dependency property
ControlsHelper.IsReadOnly. This property sets theIsReadOnlyproperty on the innerTextBoxand theIsEnabledon the inner popup button.
- New: Add new dependency property
Strong naming
MahApps will no longer be strong-named beginning with this version. #3029
Why?
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:
- Still Strong-Naming your Assemblies? You do know it’s 2016, right?
- XAML Behaviors UWP Managed 1.1.0
- Strong-Named Assemblies
Commits without PRs/Issues
- 69afa65e Adopt
SpellCheck.IsEnabledchanges fromMaterialDesignInXamlToolkit@ButchersBoy #650 Removes the extra hidden classes and enables flexible style changes, it's more WPF now. - 15bbe66d Inherit FontFamily and FontSize for
CalendarDayButtonandCalendarButtonfromCalendar. - 2c97fd4e Fix: Brushes for
MetroProgressBar - 5c4471c3 Use DynamicResource for all brushes and freeze it too.
- 8c0f893f Fix:
MetroProgressBardoes not work inside ControlTemplate - c900c5bd Check for RootVisual in
GlowWindowBehavior - ad16dc30
ResizeBorderThicknessmust also be set to 0 on maximize - 6943cc92 Use
PropertyChangeNotifierfromControlzEx - 7ea7a7c7 Removing trigger for
ResizeBorderThicknessas it's handled byControlzEx - 44c23637 Fix possible System.Windows.Data warning for
ComboBoxItem, if aComboBoxis inside aContentControl. - edc34679
FlipView: BindItemStringFormattoContentStringFormat - 2c1c692b Fix not updating the text of
TimePickerandDateTimePickerafter changing the culture - e54aaaf1 Use
DialogTitleFontSizeandDialogMessageFontSizevia DynamicResource at the base MetroDialog style - 9071379b Closing main demo was wrong (TaskCanceledException)
- 4253d89f Set
HorizontalScrollBarVisibilityandVerticalScrollBarVisibilityforHotKeyBoxandNumericUpdDownto 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.
Bugs
- #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="{DynamicResource AccentColorBrush}" 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
Features
- #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




