Every Button, RepeatButton and ToggleButton in a MahApps application is styled without any markup on your side. Beyond that the library ships a set of keyed styles to pick from — square, circular, flat, chromeless — plus a good many that belong to particular controls.

The default button and the three square variants

The implicit style

Styles/Controls.xaml applies MahApps.Styles.Button to Button and RepeatButton, and MahApps.Styles.ToggleButton to ToggleButton. Merging that dictionary — which the quick start does — is all it takes:

<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.xaml" />

The default button is a rounded, bordered button with bold, upper-cased content. The upper-casing is not a font trick: the style sets ControlsHelper.ContentCharacterCasing to Upper, and setting it back to Normal gives you the content as written.

<Button mah:ControlsHelper.ContentCharacterCasing="Normal" Content="Save" />

Along with it the style sets ControlsHelper.CornerRadius to 3, which is yours to override. A released version also sets FocusBorderThickness to 2, which made the border thicker while the button had the focus and moved its content along with it. That is gone on develop: focus colours the border through FocusBorderBrush and leaves its thickness alone. See ControlsHelper.

The square styles

<Button Style="{StaticResource MahApps.Styles.Button.Square}" Content="Save" />
Style
MahApps.Styles.Button.Square a flat-cornered button with a 2 pixel border
MahApps.Styles.Button.Square.Accent the same filled with the accent colour
MahApps.Styles.Button.Square.Highlight the same filled with the highlight colour, a darker accent

Look at the captions in the figure above: the default style upper-cases its content, but the square styles set ContentCharacterCasing to Lower, so Content="Save" comes out as save. It is a deliberate part of the look rather than an accident, but it surprises people who expect the content verbatim. Set the property to Normal if you want it as written, or, since both casings come out of resources rather than out of the styles, override MahApps.CharacterCasing.Button.Square once and every square button follows. The default style reads MahApps.CharacterCasing.Button the same way.

MahApps.Styles.Button.MetroSquare is a third square variant, and it leaves the casing alone:

MetroSquare and its accented variant

Style
MahApps.Styles.Button.MetroSquare transparent with a 2 pixel border and wider padding
MahApps.Styles.Button.MetroSquare.Accent the same filled with the accent colour

Both of those keys are on their way out. They were dropped from the library in July 2022 as unused, and no release carries that removal yet, so 2.4.11 still has them and the next version will not. The nearest thing left afterwards is MahApps.Styles.Button.Square with ControlsHelper.ContentCharacterCasing back at Normal.

Circle, flat and chromeless

A circle button, a flat button and a chromeless one

Style
MahApps.Styles.Button.Circle a round, transparent button with a 2 pixel border, meant for an icon rather than text
MahApps.Styles.Button.Flat a filled button with no border at all
MahApps.Styles.Button.Chromeless no border, no background — the content and nothing else

The circle button has no content of its own, so give it one:

<Button Width="48" Height="48" Style="{StaticResource MahApps.Styles.Button.Circle}">
    <TextBlock FontFamily="Segoe MDL2 Assets" FontSize="18" Text="&#xE72C;" />
</Button>

Chromeless is what the library uses for the small buttons inside a text box or a picker, and it is the one to reach for when a button should read as part of another control rather than as a button.

The flat button needs no extra import. Older documentation says to merge Styles/Controls.FlatButton.xaml — that dictionary still exists, but all it does is make the flat style implicit for every Button in scope. MahApps.Styles.Button.Flat itself lives in Controls.Buttons.xaml, which Controls.xaml already merges, so referencing it by key works out of the box.

The Windows 10 set

Three more keys are on develop and in no release yet. Not one of them is in 2.4.11:

Style
MahApps.Styles.Button.Win10 the flat button with a two pixel border and the content font at its normal weight, in place of the bold, upper-cased button font
MahApps.Styles.Button.Accent.Win10 the same one filled with the accent colour
MahApps.Styles.Button.Flat.Accent built on the accented one, with the ordinary button colours painted back over it

The last name promises more accent than it shows. Flat.Accent is the plain button at rest with a one pixel border, hovering moves that border to the accent colour, and the accent fills the button only while it is really held down.

The WinUI set

Two more keys, also on develop and in no release yet:

Style
MahApps.Styles.Button.WinUI the Windows 10 button in the colours Windows 11 gives it
MahApps.Styles.Button.Accent.WinUI the same one filled with the accent colour

It is the Windows 10 button with rounded corners, one pixel of border instead of two and the padding WinUI leaves around a word. What is new is the line along the bottom, drawn a shade stronger than the rest of the border, which is what makes the button look as if it stood a little above the page. Press it and that line goes, so a button that is down reads as lying flat. The accented one is framed by a thin white above and a black below rather than by the grey of the quiet one.

Both round themselves by MahApps.CornerRadius.WinUI.Control rather than by a number of their own, and both carry a minimum height of 32, the one every other control of that set has, so a button holding nothing but an icon is still as tall as the box beside it. The line along the bottom is a border of its own in the template reading ControlsHelper.BottomBorderBrush, which is why the Windows 10 button, leaving that brush unset, draws nothing there. The frame itself stops short of the bottom, since two translucent lines lying on top of each other come out brighter than either of them.

Dialog buttons

The three styles the built-in dialogs use are public, which is what makes a custom dialog look like the built-in ones:

The three dialog button styles

Style
MahApps.Styles.Button.Dialogs the plain one
MahApps.Styles.Button.Dialogs.Accent for the affirmative action
MahApps.Styles.Button.Dialogs.AccentHighlight the highlight variant

They are MahApps.Styles.Button.Square and its variants with a minimum size and ContentCharacterCasing back at Normal — which is why a dialog button says Cancel rather than cancel.

Toggle buttons

MahApps.Styles.ToggleButton is the implicit style for ToggleButton, and MahApps.Styles.ToggleButton.Circle and .Flat are the counterparts of Button.Circle and Button.Flat. They have a page of their own: ToggleButton.

The rest

Most of the button styles in the library belong to one control and are not meant to be applied by hand. They are listed here so a name in the resource dictionary is recognisable rather than mysterious:

Prefix Belongs to
Button.MetroWindow.*, Button.WindowCommands, ToggleButton.WindowCommands the window chrome and its command buttons
Button.DropDown, Button.Split, Button.Split.Arrow DropDownButton and SplitButton
Button.Calendar.* the calendar header and its arrows
Button.Hamburger the HamburgerMenu toggle
Button.Reveal the reveal button of a PasswordBox
Button.ToolBar, ToggleButton.ToolBar, ToggleButton.ToolBarOverflow ToolBar
Button.FlipView.Navigation the FlipView arrows
ToggleButton.ExpanderHeader.* the Expander header, one per direction
ToggleButton.ComboBoxDropDown, ToggleButton.ColorPickerDropDown the arrow of a ComboBox or ColorPicker
ToggleButton.TreeViewItem.ExpandCollapse the expander of a TreeViewItem
*.VisualStudio the Visual Studio look, in Styles/VS/, which Controls.xaml does not merge
Button.FocusVisualStyle.* focus adorners used by the styles above

Basing your own style on one of these is fine — that is how the Expander and TreeViewItem helpers expect you to customise them. Applying one to an ordinary button generally is not, since most assume the template around them.