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

问题描述 投票:5回答:3

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

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

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

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

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

c# windows-phone-7 xaml user-interface passwords
3个回答
23
投票

不要认为使用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!


1
投票

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

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


0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.