/// <summary>
        /// Shows the message box.
        /// </summary>
        /// <param name="child">The component calling the message box.</param>
        /// <param name="Caption">The caption (header).</param>
        /// <param name="Message">The message (content)</param>
        /// <param name="Buttons">The buttons of message box</param>
        /// <param name="Image">The icon indicating the level of the message (this parameter is not yet used in the current version of UI Framework).</param>
        /// <param name="DetailedError">The detailed error.</param>
        /// <returns>The <see cref="MessageBoxResult"/> value indication the choose of the user.</returns>
        public static MessageBoxResult ShowMessageBox(DependencyObject child, string Caption, string Message, MessageBoxButton Buttons = MessageBoxButton.OK, MessageBoxImage Image = MessageBoxImage.Information, string DetailedError = null)
        {
            Window w = GetParentWindow(child);

            if (w is BasicWindow bw)
            {
                return(bw.ShowMessageBox(Caption, Message, Buttons, Image, DetailedError));
            }
            else if (w != null)
            {
                ClassicMessageBox cmb = new ClassicMessageBox(w, Message, Caption, Buttons, Image, DetailedError)
                {
                    Owner = w
                };
                var v = cmb.ShowDialog();
                if (v.HasValue && v.Value)
                {
                    var result = cmb.Result;
                    return(result);
                }
                return(MessageBoxResult.OK);
            }
            else
            {
                ClassicMessageBox cmb = new ClassicMessageBox(null, Message, Caption, Buttons, Image, DetailedError);
                var v = cmb.ShowDialog();
                if (v.HasValue && v.Value)
                {
                    var result = cmb.Result;
                    return(result);
                }
                return(MessageBoxResult.OK);
            }
        }
        /// <summary>
        /// Show a MessageBox
        /// </summary>
        /// <param name="Caption">Title of the MessageBox</param>
        /// <param name="Message">Message</param>
        /// <param name="Buttons">Buttons to show in the MessageBox</param>
        /// <param name="Image">MessageBox Image (not used)</param>
        /// <param name="Details">Detailed error message, can include stack traces and large text to give more detailed information to users.</param>
        /// <returns>The <see cref="MessageBoxResult"/> value according to which button is clicked.</returns>
        public MessageBoxResult ShowMessageBox(string Caption, string Message, MessageBoxButton Buttons = MessageBoxButton.OK, MessageBoxImage Image = MessageBoxImage.None, string Details = null)
        {
            ClassicMessageBox mmb = new ClassicMessageBox(this, Message, Caption, Buttons, Image, Details);

            IsMaskVisible = true;
            var v = mmb.ShowDialog();

            IsMaskVisible = false;
            var result = mmb.Result;

            mmb.Close();
            if (v.HasValue && v.Value)
            {
                return(result);
            }
            else
            {
                return(MessageBoxResult.None);
            }
        }