Вопрос по passwords, windows-phone-7, xaml, c# – отображение символов пароля на каком-либо событии для passwordbox

5

Я разрабатываю приложение для Windows Phone. В этом я прошу пользователя войти в систему.

На странице входа в систему пользователь должен ввести пароль.

Теперь я хочу дать пользователю флажок, который при выборе должен показывать символы пароля.

Я не видел никакого свойства в поле пароля, чтобы показать символы пароля.

Пожалуйста, предложите какой-нибудь способ сделать это.

Related post on how to achieve it in WinForms - How can I unmask password text box and mask it back to password? RBT
Почему бы просто не использовать TextBox? Tomas McGuinness
Related post for WPF - Where can I find a free masked TextBox in WPF? RBT

Ваш Ответ

3   ответа
1

больше информации вы можете найти здесь:http://social.msdn.microsoft.com/Forums/en/wpf/thread/98d0d4d4-1463-481f-b8b1-711119a6ba99

Error: User Rate Limit Exceeded
22

Не думайте, что это возможно с PasswordBox ... просто мысль, но вы можете достичь того же результата, используя скрытый TextBox, и когда пользователь нажимает CheckBox, вы просто скрываете PasswordBox и отображаете TextBox; если он щелкнет снова, вы снова переключите их состояние видимости и так далее ...

Edit

И вот как!

Просто добавьте страницу, измените ContentPanel на StackPanel и добавьте этот код XAML:

<PasswordBox x:Name="MyPasswordBox" Password="{Binding Text, Mode=TwoWay, ElementName=MyTextBox}"/>
<TextBox x:Name="MyTextBox" Text="{Binding Password, Mode=TwoWay, ElementName=MyPasswordBox}" Visibility="Collapsed" />
<CheckBox x:Name="ShowPasswordCharsCheckBox" Content="Show password" Checked="ShowPasswordCharsCheckBox_Checked" Unchecked="ShowPasswordCharsCheckBox_Unchecked" />

Далее на странице кода добавьте следующее:

private void ShowPasswordCharsCheckBox_Checked(object sender, RoutedEventArgs e)
{
    MyPasswordBox.Visibility = System.Windows.Visibility.Collapsed;
    MyTextBox.Visibility = System.Windows.Visibility.Visible;

    MyTextBox.Focus();
}

private void ShowPasswordCharsCheckBox_Unchecked(object sender, RoutedEventArgs e)
{
    MyPasswordBox.Visibility = System.Windows.Visibility.Visible;
    MyTextBox.Visibility = System.Windows.Visibility.Collapsed;

    MyPasswordBox.Focus();
}

Это прекрасно работает, но, потратив немного больше времени, вы можете сделать это полностью в MVVM!

Error: User Rate Limit Exceeded rakesh
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
0

который наследуется от текстового поля, однако после каждого символа вы заменяете его на *, сохраняя истинное значение в частной переменной на странице. Используя флажок, вы можете переключать, показывает ли значение в текстовом поле истинное значение или значение *.

Это не изящное решение и не лучшая практика, однако я думаю, что это все еще альтернатива, если вы готовы с этим жить.

Похожие вопросы