Запрос на ввод пароля coding4fun - отображается, если введен неверный пароль
Я занимаюсь разработкой приложения для Windows Phone 7.1 и использую PasswordInputPrompt
управление в библиотеке Coding4fun. Я инициализирую элемент управления и добавляю EventHandler для Completed
событие, а затем отобразить элемент управления.
PasswordInputPrompt passwordInput = new PasswordInputPrompt
{
Title = "Application Password",
Message = "Please Enter App Password",
};
passwordInput.Completed += Pwd_Entered;
passwordInput.Show();
в Completed
Обработчик событий. Я проверяю, пустой ли пароль, и если да, то я бы хотел, чтобы отображался запрос.
void Pwd_Entered(object sender, PopUpEventArgs<string, PopUpResult> e)
{
if (!string.IsNullOrWhiteSpace(passwordInput.Value))
{
//Do something
}
else
{
passwordInput.Show(); //This is not working. Is this the correct way???
}
}
else
часть не работает. Приглашение закрывается, даже если введенный пароль пуст. Может кто-нибудь показать мне правильный путь достижения этого?
1 ответ
Я сделал несколько быстрых испытаний с этим, и это похоже на работу. Исходный код для элемента управления имеет
public virtual void OnCompleted(PopUpEventArgs<T, TPopUpResult> result)
{
this._alreadyFired = true;
if (this.Completed != null)
this.Completed((object) this, result);
if (this.PopUpService != null)
this.PopUpService.Hide();
if (this.PopUpService == null || !this.PopUpService.BackButtonPressed)
return;
this.ResetWorldAndDestroyPopUp();
}
Подразумевается, что вы можете перезаписать метод.
Итак, создайте класс, который наследуется от элемента управления
public class PasswordInputPromptOveride : PasswordInputPrompt
{
public override void OnCompleted(PopUpEventArgs<string, PopUpResult> result)
{
//Validate for empty string, when it fails, bail out.
if (string.IsNullOrWhiteSpace(result.Result)) return;
//continue if we do not have an empty response
base.OnCompleted(result);
}
}
В вашем коде позади:
PasswordInputPrompt passwordInput;
private void PasswordPrompt(object sender, System.Windows.Input.GestureEventArgs e)
{
InitializePopup();
}
private void InitializePopup()
{
passwordInput = new PasswordInputPromptOveride
{
Title = "Application Password",
Message = "Please Enter App Password",
};
passwordInput.Completed += Pwd_Entered;
passwordInput.Show();
}
void Pwd_Entered(object sender, PopUpEventArgs<string, PopUpResult> e)
{
//You should ony get here when the input is not null.
MessageBox.Show(e.Result);
}
Xaml для запуска запроса пароля
<Grid VerticalAlignment="Top" x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<Button Content="ShowPasswordPrompt" Tap="PasswordPrompt"></Button>
</Grid>