private void SaveUserCommand(object o) { // 异步请求,防止界面假死 //await Task.Run(() => //{ Application.Current.Dispatcher.Invoke(new Action(() => { ModifyUserInfoModel modifyUserInfoModel = new ModifyUserInfoModel() { user_name = UserName }; var reqResult = WebProxy(modifyUserInfoModel, ApiType.ModifyUserInfo, GlobalUser.USER.AccessToken); if (reqResult?.retCode == 0) { UserNameStatus = Visibility.Visible; EditModeStatus = Visibility.Hidden; SaveButtonStatus = Visibility.Hidden; } else { UserNameStatus = Visibility.Hidden; EditModeStatus = Visibility.Visible; SaveButtonStatus = Visibility.Visible; } })); //let's set up a little MVVM, cos that's what the cool kids are doing: var view = new SampleProgressDialog(); //show the dialog DialogHost.Show(view, o, ExtendedOpenedEventHandler, ExtendedClosingEventHandler); }
private void UserInfoDialogClosingEventHandler(object sender, DialogClosingEventArgs eventArgs) { var userInfoDialog = eventArgs.Session.Content as UserInfoDialog; var dataContent = userInfoDialog.DataContext as UserInfoDialogVM; var newName = userInfoDialog.txtUsername.Text; var oldName = dataContent.UserName; if ((bool)eventArgs.Parameter) { if (string.IsNullOrWhiteSpace(newName)) { userInfoDialog.rtbErrBox.Visibility = Visibility.Visible; userInfoDialog.errMsg.Content = "请输入您的用户名"; eventArgs.Cancel(); } else { userInfoDialog.rtbErrBox.Visibility = Visibility.Collapsed; Application.Current.Dispatcher.Invoke(new Action(() => { ModifyUserInfoModel modifyUserInfoModel = new ModifyUserInfoModel() { user_name = newName }; var reqResult = WebProxy(modifyUserInfoModel, ApiType.ModifyUserInfo, GlobalUser.USER.Token); if (reqResult?.retCode == 0) { GlobalUser.USER.UserName = newName; //userInfoDialog.txtUsername.Text = newName; RememberUser(GlobalUser.USER.UserName, GlobalUser.USER.Moblie, GlobalUser.USER.AccessToken); userInfoDialog.errMsg.Content = "保存成功"; } else { //MessageDialogVM messageDialogVM = new MessageDialogVM() //{ // MessageContent = "保存失败!" //}; //eventArgs.Session.UpdateContent(new MessageDialog()); userInfoDialog.rtbErrBox.Visibility = Visibility.Visible; userInfoDialog.errMsg.Content = "保存失败"; eventArgs.Cancel(); } })); } } else { userInfoDialog.txtUsername.Text = oldName; } }
private async void ExecuteRunExtendedDialog(object o) { if (string.IsNullOrEmpty(TxtUserName)) { ErrMsgOut = "无效的姓名!"; } else { ModifyUserInfoModel modifyUserInfoModel = new ModifyUserInfoModel() { user_name = TxtUserName }; var reqResult = WebProxy(modifyUserInfoModel, ApiType.ModifyUserInfo, GlobalUser.USER.Token); if (reqResult?.retCode == 0) { GlobalUser.USER.UserName = TxtUserName; //userInfoDialog.txtUsername.Text = newName; RememberUser(); ErrMsgOut = "更新成功"; //_uc.CurrentCloseBtn.CommandParameter = true; //Thread.Sleep(2000); //_uc.CurrentCloseBtn.Click await Task.Factory.StartNew(() => Thread.Sleep(333)) .ContinueWith(t => { _uc.CurrentCloseBtn.CommandParameter = true; ButtonAutomationPeer peer = new ButtonAutomationPeer(_uc.CurrentCloseBtn); IInvokeProvider invokeProv = peer.GetPattern(PatternInterface.Invoke) as IInvokeProvider; invokeProv.Invoke(); }, TaskScheduler.FromCurrentSynchronizationContext()); } else { ErrMsgOut = reqResult.retMsg; //"更新失败"; } } }