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

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

问题描述:

我正在开发一个Windows Phone应用程序。在那里我要求用户登录。在密码箱的某些事件上显示密码字符

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

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

我还没有看到密码框中的任何属性来显示密码字符。

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

+0

为什么不使用文本框? – tomasmcguinness 2012-04-10 15:25:01

不要认为这是可能与PasswordBox ...只是一个想法,但你可能会使用一个隐藏的文本框实现相同的结果,当用户点击复选框,你只需隐藏密码框并显示文本框;如果他再次点击,你再次打开自己的知名度状态,等等...

编辑

这里,它是如何!

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

+0

但是当复选框被选中时显示一个小故障 – rakesh 2012-04-11 09:12:42

+0

@rakeshkumar有什么故障?你能描述一下吗? – 2012-04-11 10:00:35

+0

老兄!这真太了不起了。太简单。谢谢!! – 2014-03-01 06:10:23

使用默认密码箱无法实现您想要的功能。

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

+0

该帖子相当老,现在不反映PasswordBox.Password的真实性质,因为现在这是一个依赖属性,所以你可以绑定它! – 2012-04-10 17:08:37

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

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