public static MessageDialogResult ShowModalMessageConfirmExternal(this MetroWindow window, string title, string message, MessageDialogStyle style = MessageDialogStyle.Affirmative, MetroDialogSettings settings = null, int?showWidth = null, int?showHeight = null)
        {
            var win = CreateModalExternalWindow(window, showWidth, showHeight);

            settings = settings ?? window.MetroDialogOptions;

            //create the dialog control
            var dialog = new MessageDialogConfirm(window, settings)
            {
                Message      = message,
                Title        = title,
                ButtonStyle  = style,
                DialogBottom = null,
            };

            dialog.PART_AffirmativeButton.Width = dialog.PART_NegativeButton.Width = (showWidth < 1 ? (window.ActualWidth / 2 - 2) : (Convert.ToInt32(showWidth) / 2 - 2));

            SetDialogFontSizes(settings, dialog);

            win.Content = dialog;

            MessageDialogResult result = MessageDialogResult.Affirmative;

            dialog.WaitForButtonPressAsync().ContinueWith(task =>
            {
                result = task.Result;
                win.Invoke(win.Close);
            });

            HandleOverlayOnShow(settings, window);
            win.ShowDialog();
            HandleOverlayOnHide(settings, window);
            return(result);
        }
        private static void SetButtonState(MessageDialogConfirm md)
        {
            if (md.PART_AffirmativeButton == null)
            {
                return;
            }

            switch (md.ButtonStyle)
            {
            case MessageDialogStyle.Affirmative:
            {
                md.PART_AffirmativeButton.Visibility = Visibility.Visible;
                md.PART_NegativeButton.Visibility    = Visibility.Collapsed;
            }
            break;

            case MessageDialogStyle.AffirmativeAndNegativeAndSingleAuxiliary:
            case MessageDialogStyle.AffirmativeAndNegativeAndDoubleAuxiliary:
            case MessageDialogStyle.AffirmativeAndNegative:
            {
                md.PART_AffirmativeButton.Visibility = Visibility.Visible;
                md.PART_NegativeButton.Visibility    = Visibility.Visible;

                //if (md.ButtonStyle == MessageDialogStyle.AffirmativeAndNegativeAndSingleAuxiliary || md.ButtonStyle == MessageDialogStyle.AffirmativeAndNegativeAndDoubleAuxiliary)
                //{
                //    md.PART_FirstAuxiliaryButton.Visibility = Visibility.Visible;
                //}

                //if (md.ButtonStyle == MessageDialogStyle.AffirmativeAndNegativeAndDoubleAuxiliary)
                //{
                //    md.PART_SecondAuxiliaryButton.Visibility = Visibility.Visible;
                //}
            }
            break;
            }

            md.AffirmativeButtonText     = md.DialogSettings.AffirmativeButtonText;
            md.NegativeButtonText        = md.DialogSettings.NegativeButtonText;
            md.FirstAuxiliaryButtonText  = md.DialogSettings.FirstAuxiliaryButtonText;
            md.SecondAuxiliaryButtonText = md.DialogSettings.SecondAuxiliaryButtonText;

            switch (md.DialogSettings.ColorScheme)
            {
            case MetroDialogColorScheme.Accented:
                md.PART_AffirmativeButton.Style = md.FindResource("AccentedDialogHighlightedSquareButton") as Style;
                md.PART_NegativeButton.Style    = md.FindResource("AccentedDialogHighlightedSquareButton") as Style;
                break;
            }
        }