Version 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 keys-
ComboBoxBorderThemeThickness(default 1) -
ComboBoxPopupBorderThemeThickness(default 1) -
ComboBoxPopupBorderThemePadding(default 1)
-
- New: Changing the header padding for
GroupBoxandExpandervia resource keys-
GroupBoxHeaderThemePadding(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:
MahApps.Metro.Styles.WindowButton.Close.Light.Win10andMahApps.Metro.Styles.WindowButton.Close.Dark.Win10styles


- New:
- New:
ItemHelperclass with someBrushattached properties for mouse interaction. These properties can be used withHamburgerMenuItem,ListBoxItem,ListViewItem,TreeViewItemandComboBoxItem.-
ItemHelper.ActiveSelectionBackgroundBrushdefaultAccentColorBrush -
ItemHelper.ActiveSelectionForegroundBrushdefaultAccentSelectedColorBrush -
ItemHelper.DisabledBackgroundBrushdefaultx:Null -
ItemHelper.DisabledForegroundBrushdefaultGrayNormalBrush -
ItemHelper.DisabledSelectedBackgroundBrushdefaultGrayBrush7 -
ItemHelper.DisabledSelectedForegroundBrushdefaultAccentSelectedColorBrush -
ItemHelper.HoverBackgroundBrushdefaultAccentColorBrush3 -
ItemHelper.HoverSelectedBackgroundBrushdefaultAccentColorBrush -
ItemHelper.SelectedBackgroundBrushdefaultAccentColorBrush2 -
ItemHelper.SelectedForegroundBrushdefaultAccentSelectedColorBrush
-
-
ToggleSwitch- New:
ContentPaddingdependency property to change the padding of the inner content in an easy way.
- New:
-
HamburgerMenu- Renaming (internal used styles):
-
HamburgerListBoxItemStyle->HamburgerMenuItemStyle -
HamburgerListBoxStyle->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- 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

- Control template:
- 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
Sliderbrushes-
SliderHelper.ThumbFillBrushdefaultAccentBaseColorBrush -
SliderHelper.ThumbFillHoverBrushdefaultGrayBrush3 -
SliderHelper.ThumbFillPressedBrushdefaultAccentBaseColorBrush -
SliderHelper.ThumbFillDisabledBrushdefaultGrayBrush1 -
SliderHelper.TrackFillBrushdefaultGrayBrush2 -
SliderHelper.TrackFillHoverBrushdefaultAccentBaseColorBrush -
SliderHelper.TrackFillPressedBrushdefaultGrayBrush6 -
SliderHelper.TrackFillDisabledBrushdefaultGrayBrush3 -
SliderHelper.TrackValueFillBrushdefaultAccentBaseColorBrush -
SliderHelper.TrackValueFillHoverBrushdefaultGrayBrush6 -
SliderHelper.TrackValueFillPressedBrushdefaultGrayBrush6 -
SliderHelper.TrackValueFillDisabledBrushdefaultGrayBrush6
-
- Default
Sliderbrushes-
SliderHelper.ThumbFillBrushdefaultGrayBrush2 -
SliderHelper.ThumbFillHoverBrushdefaultGrayBrush3 -
SliderHelper.ThumbFillPressedBrushdefaultAccentColorBrush -
SliderHelper.ThumbFillDisabledBrushdefaultGrayBrush5 -
SliderHelper.TrackFillBrushdefaultGrayBrush3 -
SliderHelper.TrackFillHoverBrushdefaultAccentColorBrush -
SliderHelper.TrackFillPressedBrushdefaultGrayBrush2 -
SliderHelper.TrackFillDisabledBrushdefaultGrayBrush3 -
SliderHelper.TrackValueFillBrushdefaultAccentColorBrush -
SliderHelper.TrackValueFillHoverBrushdefaultGrayBrush6 -
SliderHelper.TrackValueFillPressedBrushdefaultGrayBrush6 -
SliderHelper.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