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.MetroWatermarkTextBlock
style to make it easier to set custom properties likeFontFamily
orFontSize
for all Watermarks. - New: Replacing
WindowChrome
and related things with reference toControlzEx
#3021 NumericUpDown
- New:
SnapToMultipleOfInterval
property forNumericUpDown
which indicates if theNumericUpDown
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 enumerationNumericInput
(default isNumericInput.All
) - Mark
HasDecimals
as obsolete - Block scientific input if only numbers allowed
- Fix:
NumericUpDown
,HotKeyBox
andTimerPickerBase
doesn't focus for the first time when the FocusManager will be used.
- New:
- New: Changing popup border thickness and padding for
ComboBox
via resource keysComboBoxBorderThemeThickness
(default 1)ComboBoxPopupBorderThemeThickness
(default 1)ComboBoxPopupBorderThemePadding
(default 1)
- New: Changing the header padding for
GroupBox
andExpander
via resource keysGroupBoxHeaderThemePadding
(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
- New brush for light and dark themes:
Watermark
- Use
TextBoxHelper.Watermark
forHotKeyBox
instead own DependencyProperty (marked as obsolete). - Allow
TextBoxHelper.AutoWatermark
forHotKey
DependencyProperty ofHotKeyBox
. - 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 forTextBox
) to set how the watermark should wrap text. Default is binded toTextWrapping
property. thx to @amkuchta
- Use
VS Theme
- New:
StandardGroupBox
style - New:
StandardExpander
style
- New:
TabControlHelper
- New:
TabControlHelper.CloseButtonEnabled
attached property to show / hide the close button (default is true). - New:
TabControlHelper.CloseTabCommand
attached property which executes if theTabItem
will be closed. - New:
TabControlHelper.CloseTabCommandParameter
attached property which will be passed to theCloseTabCommand
.
- New:
- New: Add
TextBoxHelper.ButtonsAlignment
support forPasswordBox
styles #3074 @waleswood - New:
MetroHeader
control 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:
ScrollViewerHelper
class- New:
IsHorizontalScrollWheelEnabled
attached property. If it's set to true and a horizontalScrollBar
is visible then the mouse wheel scrolls to left and right. - Change:
VerticalScrollBarOnLeftSide
attached property fromScrollBarHelper
toScrollViewerHelper
. ScrollBarHelper is now marked as obsolete.
- New:
- New: Use
FlatButtonForegroundBrush
in the newMahApps.Metro.Styles.FlatButtonFocusVisualStyle
which is used now forMetroFlatButton
andMetroFlatToggleButton
PasswordBoxHelper
- New:
RevealButtonContent
andRevealButtonContentTemplate
attached properties - Set the
DefaultRevealButtonIcon
ContentControl toRevealButtonContent
attached property
- New:
- Change: Use the original Win 10 close button style
- New:
ItemHelper
class with someBrush
attached properties for mouse interaction. These properties can be used withHamburgerMenuItem
,ListBoxItem
,ListViewItem
,TreeViewItem
andComboBoxItem
.ItemHelper.ActiveSelectionBackgroundBrush
defaultAccentColorBrush
ItemHelper.ActiveSelectionForegroundBrush
defaultAccentSelectedColorBrush
ItemHelper.DisabledBackgroundBrush
defaultx:Null
ItemHelper.DisabledForegroundBrush
defaultGrayNormalBrush
ItemHelper.DisabledSelectedBackgroundBrush
defaultGrayBrush7
ItemHelper.DisabledSelectedForegroundBrush
defaultAccentSelectedColorBrush
ItemHelper.HoverBackgroundBrush
defaultAccentColorBrush3
ItemHelper.HoverSelectedBackgroundBrush
defaultAccentColorBrush
ItemHelper.SelectedBackgroundBrush
defaultAccentColorBrush2
ItemHelper.SelectedForegroundBrush
defaultAccentSelectedColorBrush
ToggleSwitch
- New:
ContentPadding
dependency 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
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
- Move template to
- Change inner ListBox scrolling (to CanContentScroll)
- New: Add
ItemContainerStyle
andOptionsItemContainerStyle
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 fromBitmapImage
to subclassImageSource
- New: Introduce
ItemInvoked
event (as an alternative toItemClick
andOptionsItemClick
) - New:
SelectionIndicator
(rectangle) which can be enabled with the newShowSelectionIndicator
dependency property- New: resource key
HamburgerMenuSelectionIndicatorThemeWidth
default6
- New: resource key
HamburgerMenuSelectionIndicatorThemeHeight
default24
- New: resource key
- Improved item
FocusVisualStyle
- Add new (readonly)
ItemFocusVisualStyle
dependency property which will be re-created if one of these properties are changed:OpenPaneLength
,CompactPaneLength
andIsPaneOpen
. Default template isHamburgerMenuItemFocusVisualTemplate
. - This FocusVisualStyle can be override at the
HamburgerMenuItem
style by setting theFocusVisualStyle
property.
- 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
HamburgerMenu
resources to Control styles to allow style manipulation and fix binding expression infos - Fix:
PanePlacement
handling for right aligned - New: Add
ToolTip
DependencyProperty
forHamburgerMenuItem
- Renaming (internal used styles):
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.
- New: Create new style for Dialogs
MetroWindow
(Dialogs
)- Add a new (readonly)
IsAnyDialogOpen
dependency property. This property will be updated if a dialog is shown or not. - New:
OwnerCanCloseWithDialog
property atMetroDialogSettings
which can be used to handle how the owner of the dialog can be closed. - New:
IsCloseButtonEnabledWithDialog
property atMetroWindow
which indicates if the close button should be enabled or not if a dialog is shown. - The
HandleOverlayOnHide
andHandleOverlayOnShow
methods sets theIsCloseButtonEnabledWithDialogPropertyKey
and restores focus if needed - New:
OverlayFadeIn
andOverlayFadeOut
properties 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:
HideMetroDialogAsync
fails sometimes to close dialog (async call order)
- Add a new (readonly)
- New: Win10
Slider
style:MahApps.Metro.Styles.Slider.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
- Control template:
- 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
- Control template:
- New: Normal
RangeSlider
style:MahApps.Metro.Styles.RangeSlider
- Use
SliderHelper
brush properties also forRangeSlider
- Thump styles for the middle part:
MahApps.Metro.Styles.RangeSlider.HorizontalMiddleThumb
,MahApps.Metro.Styles.RangeSlider.VerticalMiddleThumb
- Use
MetroThumb
insteadThumb
- Set
ReservedSpace
for allTickBar
controls insteadMargin
- Use
SliderHelper
: Add new attached properties for all possibleBrushes
- Allow
SliderHelper.EnableMouseWheel
andSliderHelper.ChangeValueBy
forRangeSlider
too. - Default Win10
Slider
brushesSliderHelper.ThumbFillBrush
defaultAccentBaseColorBrush
SliderHelper.ThumbFillHoverBrush
defaultGrayBrush3
SliderHelper.ThumbFillPressedBrush
defaultAccentBaseColorBrush
SliderHelper.ThumbFillDisabledBrush
defaultGrayBrush1
SliderHelper.TrackFillBrush
defaultGrayBrush2
SliderHelper.TrackFillHoverBrush
defaultAccentBaseColorBrush
SliderHelper.TrackFillPressedBrush
defaultGrayBrush6
SliderHelper.TrackFillDisabledBrush
defaultGrayBrush3
SliderHelper.TrackValueFillBrush
defaultAccentBaseColorBrush
SliderHelper.TrackValueFillHoverBrush
defaultGrayBrush6
SliderHelper.TrackValueFillPressedBrush
defaultGrayBrush6
SliderHelper.TrackValueFillDisabledBrush
defaultGrayBrush6
- Default
Slider
brushesSliderHelper.ThumbFillBrush
defaultGrayBrush2
SliderHelper.ThumbFillHoverBrush
defaultGrayBrush3
SliderHelper.ThumbFillPressedBrush
defaultAccentColorBrush
SliderHelper.ThumbFillDisabledBrush
defaultGrayBrush5
SliderHelper.TrackFillBrush
defaultGrayBrush3
SliderHelper.TrackFillHoverBrush
defaultAccentColorBrush
SliderHelper.TrackFillPressedBrush
defaultGrayBrush2
SliderHelper.TrackFillDisabledBrush
defaultGrayBrush3
SliderHelper.TrackValueFillBrush
defaultAccentColorBrush
SliderHelper.TrackValueFillHoverBrush
defaultGrayBrush6
SliderHelper.TrackValueFillPressedBrush
defaultGrayBrush6
SliderHelper.TrackValueFillDisabledBrush
defaultGrayBrush6
- Allow
DatePicker
- New: Add new dependency property
ControlsHelper.IsReadOnly
. This property sets theIsReadOnly
property on the innerTextBox
and theIsEnabled
on 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.IsEnabled
changes fromMaterialDesignInXamlToolkit
@ButchersBoy #650 Removes the extra hidden classes and enables flexible style changes, it's more WPF now. - 15bbe66d Inherit FontFamily and FontSize for
CalendarDayButton
andCalendarButton
fromCalendar
. - 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
fromControlzEx
- 7ea7a7c7 Removing trigger for
ResizeBorderThickness
as it's handled byControlzEx
- 44c23637 Fix possible System.Windows.Data warning for
ComboBoxItem
, if aComboBox
is inside aContentControl
. - edc34679
FlipView
: BindItemStringFormat
toContentStringFormat
- 2c1c692b Fix not updating the text of
TimePicker
andDateTimePicker
after changing the culture - e54aaaf1 Use
DialogTitleFontSize
andDialogMessageFontSize
via DynamicResource at the base MetroDialog style - 9071379b Closing main demo was wrong (TaskCanceledException)
- 4253d89f Set
HorizontalScrollBarVisibility
andVerticalScrollBarVisibility
forHotKeyBox
andNumericUpdDown
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.
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