private async Task DoLoginAsync(string captcha = "")
        {
            var result = await BiliClient.Account.LoginAsync(txtBoxAcc.Text, txtBoxPswd.Password, captcha : captcha);

            switch (result.Status)
            {
            case LoginResultType.Success:
                Task.Run(async() =>
                {
                    await BiliClient.Account.GetMeAsync();
                    Application.Current.Dispatcher.Invoke(() => windowCaption.GetTargetWindow().Close());
                });
                break;

            case LoginResultType.NeedCaptcha:
                var captchaBlock = new CaptchaBlock();
                var mes          = await captchaBlock.ShowAsync();

                if (mes == ContentDialogResult.Primary)
                {
                    await DoLoginAsync(captchaBlock.Code);
                }
                break;

            case LoginResultType.Fail:
                await new ContentDialog
                {
                    Title   = "登陆失败",
                    Content = "账号或密码错误"
                }.ShowAsync();
                ChangeIsLoginingState(false);
                break;

            case LoginResultType.Error:
                await new ContentDialog
                {
                    Title   = "登陆失败",
                    Content = "账号或密码错误"
                }.ShowAsync();
                ChangeIsLoginingState(false);
                break;
            }
        }
        private async Task Login()
        {
            //var waiting = new WaitingPopup("正在验证数据...");
            //waiting.ShowPopup();
            string userName = UserNameInputBox.Text;
            string password = PasswordInputBox.Text;

            if (string.IsNullOrEmpty(userName) || string.IsNullOrEmpty(password))
            {
                ShowMessageBanner("用户名或密码不能为空");
            }
            else if (CaptchaBlock.Visibility == Visibility.Visible && string.IsNullOrEmpty(CaptchaBlock.Code))
            {
                ShowMessageBanner("验证码不能为空");
            }
            else
            {
                var client = MainContainer.Container.GetService <IBiliBiliClient>();

                var result = await client.Account.LoginAsync(userName, password, CaptchaBlock.Code);

                switch (result.Status)
                {
                case LoginResultType.Success:
                    var me = await client.Account.GetMeAsync();

                    ViewModel.ChangeUserInfo(me);
                    //await App.BiliViewModel.GetMeAsync();
                    HidePopup();
                    break;

                case LoginResultType.Fail:
                    ShowMessageBanner("登录失败,请检查账号密码");
                    break;

                case LoginResultType.Error:
                    ShowMessageBanner("2233娘无情地驳回了请求,请稍后重试");
                    break;

                case LoginResultType.NeedCaptcha:
                    ShowMessageBanner("需要输入验证码");
                    CaptchaBlock.Visibility = Visibility.Visible;
                    await CaptchaBlock.RefreshCode();

                    await Task.Delay(1000);

                    HideMessageBanner();
                    break;

                case LoginResultType.Busy:
                    ShowMessageBanner("服务器忙,请稍后重试");
                    break;

                case LoginResultType.NeedValidate:
                    ShowMessageBanner("需要安全验证");
                    BackupWebView.Visibility = Visibility.Visible;
                    BackupWebView.Source     = new Uri(result.Url.Replace("&ticket=1", ""));
                    await Task.Delay(1000);

                    HideMessageBanner();
                    break;

                default:
                    break;
                }
            }
            //waiting.HidePopup();
        }