public static MessageBoxResult OK(string title, string msg, MessageBoxDisplayMode mode = MessageBoxDisplayMode.MaskHor, Window owner = null)
 {
     return(Application.Current.Dispatcher.Invoke(() =>
     {
         MessageBox messageBox = new MessageBox();
         messageBox.Opacity = 0;
         messageBox.Message = msg;
         messageBox.Title = title;
         messageBox.MessageBoxButton = MessageBoxButton.OK;
         messageBox.UpdateBoxStyle(mode);
         try
         {
             messageBox.Owner = owner == null? Application.Current.MainWindow : owner;
         }
         catch { }
         messageBox.Loaded += (s, e) =>
         {
             DoubleAnimation aniOpacity = new DoubleAnimation();
             aniOpacity.Duration = new Duration(TimeSpan.FromMilliseconds(600));
             aniOpacity.To = 1;
             aniOpacity.EasingFunction = new QuarticEase()
             {
                 EasingMode = EasingMode.EaseOut
             };
             (s as MessageBox).BeginAnimation(MessageBox.OpacityProperty, aniOpacity);
         };
         messageBox.ShowDialog();
         return MessageBoxResult.OK;
     }));
 }
        void UpdateBoxStyle(MessageBoxDisplayMode mode)
        {
            switch (mode)
            {
            case MessageBoxDisplayMode.Normal:
                this.Style = this.Resources["msgBoxStyleNormal"] as Style;
                break;

            case MessageBoxDisplayMode.MaskCenter:
                this.Style = this.Resources["msgBoxStyleFullScr"] as Style;
                break;

            case MessageBoxDisplayMode.MaskHor:
                this.Style = this.Resources["msgBoxStyleFullScrCross"] as Style;
                break;

            default:
                break;
            }
        }