Since the built-in WPF dialogs are unstyleable, we had to create our own implementation.
You will find our dialogs within the MahApps.Metro.Controls.Dialogs namespace.
All dialogs in MahApps.Metro are called asynchronously. This means that you can use the async / await keywords to use the methods and call the dialogs
Child Pages
Message Dialog
A message dialog asks a question or states a fact and waits for a button. It is drawn inside the MetroWindow rather than in a window of its own, so it dims what is behind it instead of stacking another frame on the desktop.
Input Dialog
An input dialog asks for one line of text. Like the other dialogs it is drawn inside the MetroWindow rather than in a window of its own.
Login Dialog
A login dialog asks for a username and a password. Like the other dialogs it is drawn inside the MetroWindow rather than in a window of its own.
Progress Dialog
A progress dialog reports how far a long-running operation has got. Like the other dialogs it is drawn inside the MetroWindow rather than in a window of its own.
MVVM
The dialogs are shown by a MetroWindow, but a view model has no business knowing about windows. IDialogCoordinator bridges that: the view model asks the coordinator for a dialog and passes itself along as the context, and the coordinator works out which window that context belongs to.
Custom Dialogs
When none of the built-in dialogs fits, CustomDialog gives you the same overlay with whatever content you put in it. It is a ContentControl, so anything that goes in a UserControl goes in a dialog.
Dialog Settings
MetroDialogSettings is the one object every built-in dialog takes. It is the last argument of each Show...Async method, and it decides the button labels, the colours, the font sizes, the animations and how the dialog can be cancelled.