/// <summary>
        /// 打开一个等待界面,并打开父窗体的遮罩层。该界面将以Show的方式打开,但用户不能使用Alt+F4强制关闭此页面。若要关闭此界面,请调用PUMessageBox.CloseAwait()方法。
        /// </summary>
        /// <param name="content">要显示的内容</param>
        /// <param name="cancelCallback">若允许用户取消等待,则必须指定点击取消按钮后的后续处理。用户点击了取消按钮,该窗体需要您手动关闭。若不指定后续处理,取消按钮将被禁用。</param>
        public static void ShowAwait(string content, RoutedEventHandler cancelCallback = null)
        {
            var mbox = new PUMessageBox("", "", false, false, AnimationStyles.Scale);

            mbox.AllowForcingClose = false;
            _instance          = mbox;
            mbox.txtAwait.Text = content;
            mbox.CheckButtonContent(Buttons.Cancel);
            mbox._cancel             = cancelCallback;
            mbox.Topmost             = true;
            mbox.loading.IsRunning   = true;
            mbox.grdAwait.Visibility = Visibility.Visible;
            mbox.Show();
        }
        /// <summary>
        /// 打开一个等待界面,并打开父窗体的遮罩层。该界面将以Show的方式打开,但用户不能使用Alt+F4强制关闭此页面。若要关闭此界面,请调用PUMessageBox.CloseAwait()方法。
        /// </summary>
        /// <param name="content">要显示的内容</param>
        public static void ShowAwait(string content)
        {
            var mbox = new PUMessageBox("", "", false, false, AnimationStyles.Scale);

            mbox.AllowForcingClose = false;
            _instance            = mbox;
            mbox.txtAwait.Text   = content;
            mbox.btnOK.IsEnabled = false;
            mbox.CheckButtonContent(Buttons.Cancel);
            mbox.Topmost             = true;
            mbox.loading.IsRunning   = true;
            mbox.grdAwait.Visibility = Visibility.Visible;
            mbox.Show();
        }