public MaterialMessageBox(object content, MaterialMessageBoxButtons buttons) { InitializeComponent(); DataContext = this; if (buttons.HasFlag(MaterialMessageBoxButtons.No)) { Buttons.Add(MaterialMessageBoxButtons.No); } if (buttons.HasFlag(MaterialMessageBoxButtons.Yes)) { Buttons.Add(MaterialMessageBoxButtons.Yes); } if (buttons.HasFlag(MaterialMessageBoxButtons.Cancel)) { Buttons.Add(MaterialMessageBoxButtons.Cancel); } if (buttons.HasFlag(MaterialMessageBoxButtons.Ok)) { Buttons.Add(MaterialMessageBoxButtons.Ok); } DialogContent = content; }
/// <summary> /// Shows materialized analog of standard MessageBox. To use this method you need to set <see cref="DialogHost"/> instance in your window /// (typically this may be specified towards the root of a Window's XAML). /// </summary> /// <param name="header">Header of the dialog.</param> /// <param name="content">Main content.</param> /// <param name="buttons">Specifies constants defining which buttons to display on a Material Dialog.</param> /// <param name="dialogIdentifier"><see cref="DialogHost"/> identifier where need to show materialized message box. It's analog of window's HWND.</param> /// <returns>One of the <see cref="MaterialDialogResult"/> values.</returns> public static async Task <MaterialDialogResult> ShowAsync( string header, string content, MaterialMessageBoxButtons buttons, string dialogIdentifier, PackIconKind?packIconKind = null) { var instance = new MaterialMessageBoxContent { DataContext = new MaterialMessageBoxViewModel(header, content, buttons, dialogIdentifier, packIconKind) }; var result = await DialogHost.Show(instance, dialogIdentifier); return(result is null ? MaterialDialogResult.None : (MaterialDialogResult)result); }
/// <summary> /// Show message box. /// </summary> /// <param name="identifier">Dialog identifier.</param> /// <param name="content">Dialog content.</param> /// <param name="buttons">Buttons.</param> /// <returns></returns> public static async Task <MaterialMessageBoxButtons> ShowMessageBoxAsync(this IDialogIdentifier identifier, object content, MaterialMessageBoxButtons buttons) => await identifier.ShowAsync <MaterialMessageBoxButtons>(new MaterialMessageBox(content, buttons));