public static MessageBoxResult Show(
            Window owner, string text, string caption, string log,
            MessageBoxButton button, MessageWindowImage icon, MessageBoxResult defaultResult)
        {
            MessageWindow box = new MessageWindow();

            box.Owner = (owner == null ? Application.Current.MainWindow : owner);

            // allow blank caption, String.Empty
            if (caption != null)
            {
                box.titleBlock.Text = caption;
            }

            // text is required
            box.messageBox.Text = text;

            if (log != null)
            {
                box.logBox.Text = log;
                box.logBox.Visibility = Visibility.Visible;
            }

            box.SetButtons(button);
            box.SetIcon(icon);

            box.SetDefaultResult(defaultResult);

            box.ShowDialog();

            return box.Result;
        }