C#/WPF 在 passwordBox 中取消屏蔽密码
C# / WPF Unmask password inside the passwordBox
当我点击复选框时,如何取消和屏蔽 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 中有其他方法吗?
下面link将为您带来您所寻找的我好先生的答案。 Lamas 先生很好地回答了操作方法,所以我宁愿将您重定向到答案:)
showing password characters on some event for passwordbox
要做到这一点非常简单。
首先,您应该在密码框中添加值 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
PreviewMouseUp
和MouseLeave
,但您可以根据自己的情况选择合适的事件。
现在在您的代码中您需要编写函数:
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;
}
我建议使用 MahApps.Metro ... 从 nuget.org 安装后 ... 你必须像这样在你的 xaml 中使用它
xmlns:controls="http://metro.mahapps.com/winf/xaml/controls"
然后...只需将它的样式用于您的 PasswordBox 控件
<PasswordBox Style="{StaticResource MetroButtonRevealedPasswordBox}" />
您甚至可以使用 controls:PasswordBoxHelper.RevealButtonContent 附件更改显示图标的内容 属性
当我点击复选框时,如何取消和屏蔽 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 中有其他方法吗?
下面link将为您带来您所寻找的我好先生的答案。 Lamas 先生很好地回答了操作方法,所以我宁愿将您重定向到答案:)
showing password characters on some event for passwordbox
要做到这一点非常简单。
首先,您应该在密码框中添加值 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
PreviewMouseUp
和MouseLeave
,但您可以根据自己的情况选择合适的事件。
现在在您的代码中您需要编写函数:
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;
}
我建议使用 MahApps.Metro ... 从 nuget.org 安装后 ... 你必须像这样在你的 xaml 中使用它 xmlns:controls="http://metro.mahapps.com/winf/xaml/controls"
然后...只需将它的样式用于您的 PasswordBox 控件
<PasswordBox Style="{StaticResource MetroButtonRevealedPasswordBox}" />
您甚至可以使用 controls:PasswordBoxHelper.RevealButtonContent 附件更改显示图标的内容 属性