在密码箱的某些事件上显示密码字符

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在密码箱的某些事件上显示密码字符相关的知识,希望对你有一定的参考价值。

我正在开发一个Windows Phone应用程序。我要求用户登录。

在登录页面上,用户必须输入密码。

现在我想要的是,我给用户一个复选框,选中后应该显示密码的字符。

我没有在密码框上看到任何显示密码字符的属性。

请建议一些方法来做到这一点。

答案

不要认为使用PasswordBox是可能的......只是想一想,但是你可以使用隐藏的TextBox完成相同的结果,当用户点击CheckBox时,你只需隐藏PasswordBox并显示TextBox;如果他再次点击,你再次切换他们的可见性状态,依此类推......

编辑

这是怎么回事!

只需添加一个页面,将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!

另一答案

使用默认密码框,无法实现所需的功能。

您可以在这里找到更多信息:http://social.msdn.microsoft.com/Forums/en/wpf/thread/98d0d4d4-1463-481f-b8b1-711119a6ba99

另一答案

您可以创建自己的继承自文本框的控件,但是在每个字符之后用*替换它,将真值存储在页面上的私有变量中。使用复选框,您可以切换文本框中的值是显示真值还是*值。

它不是一个优雅的解决方案,也不是最佳实践,但我认为如果你愿意接受它,它仍然是一个替代方案。

以上是关于在密码箱的某些事件上显示密码字符的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式验证不能包含某些字符的密码

在 C# 中具有流畅验证的正则表达式 - 如何在密码中不允许空格和某些特殊字符?

使用 FBSDKLoginBehaviorWeb 处理 fb 集成上的错误密码事件

21个常用代码片段

android EditText密码框,怎么让它只显示密码点,不让它显示最后一位输入的字符?

用非十六进制字母字符替换 sha-256 哈希中的数字在密码学上是不是安全?