C#/ WPF在passwordBox中取消屏蔽密码

时间:2015-06-25 03:04:08

标签: c# wpf checkbox passwords passwordbox

每当我点击checkBox时,我怎么能解密并屏蔽passwordBox中的密码?我正在使用C#WPF模板。

这是我的.XAML代码:

<PasswordBox x:Name="passwordBox_password" Grid.Row="2" Grid.Column="1" Grid.ColumnSpan="2" Margin="5" Height="25" />
        <CheckBox x:Name="checkBox_showPassword" Grid.Row="3" Grid.Column="1" Margin="5,0,5,5" Content="show password" Checked="checkBox_showPassword_Checked" Unchecked="checkBox_showPassword_Unchecked" />

这是我的.CS代码:

private void checkBox_showPassword_Checked(object sender, RoutedEventArgs e)
    {
        // what to do here ?
    }

    private void checkBox_showPassword_Unchecked(object sender, RoutedEventArgs e)
    {
        // what to do here ?
    }

或者在WPF中有另一种方法吗?

3 个答案:

答案 0 :(得分:3)

以下链接将为您提供您正在寻找我的好先生的答案。 Lamas先生在回答方法方面做得很好,所以我宁愿将你重定向到答案:)

showing password characters on some event for passwordbox

答案 1 :(得分:1)

我建议使用MahApps.Metro ...从nuget.org安装它之后...必须像这样在xaml的头部使用它     xmlns:controls =“ http://metro.mahapps.com/winf/xaml/controls”

然后...只需将其样式用于您的PasswordBox控件

<PasswordBox  Style="{StaticResource MetroButtonRevealedPasswordBox}" />

您甚至可以使用以下控件更改显示图标的内容:PasswordBoxHelper.RevealButtonContent附加属性

答案 2 :(得分:0)

这很简单。 首先,您应该在密码框中添加值PasswordChar

<PasswordBox Name="PasswordHidden" PasswordChar="•"/>

下一步,在PasswordBox标记下,您应该添加一个Visibility值设置为“隐藏”的文本框:

<TextBox Name="PasswordUnmask" Visibility="Hidden"/>

以及一个用于显示/隐藏密码的触发器,例如简单的文本或按钮。就我而言,我使用的是简单文字。

<TextBlock Name="ShowPassword"/>

接下来,您需要在触发元素中添加3个不同的事件(例如,这对于TextBlock或Image有效,如果要使用Button,则应该选择其他事件):

<TextBlock x:Name="ShowPassword" Text="SHOW" PreviewMouseDown="ShowPassword_PreviewMouseDown" PreviewMouseUp="ShowPassword_PreviewMouseUp" MouseLeave="ShowPassword_MouseLeave"/>

事件为PreviewMouseDown PreviewMouseUpMouseLeave,但您可以根据自己的情况选择合适的事件。

现在,在代码中,您需要对函数进行编程:

private void ShowPassword_PreviewMouseDown(object sender, MouseButtonEventArgs e) => ShowPasswordFunction();
private void ShowPassword_PreviewMouseUp(object sender, MouseButtonEventArgs e) => HidePasswordFunction();
private void ShowPassword_MouseLeave(object sender, MouseEventArgs e) => HidePasswordFunction();

private void ShowPasswordFunction()
{
    ShowPassword.Text = "HIDE";
    PasswordUnmask.Visibility = Visibility.Visible;
    PasswordHidden.Visibility = Visibility.Hidden;
    PasswordUnmask.Text = PasswordHidden.Password;
}

private void HidePasswordFunction()
{
    ShowPassword.Text = "SHOW";
    PasswordUnmask.Visibility = Visibility.Hidden;
    PasswordHidden.Visibility = Visibility.Visible;
}