C# 在PasswordBox中显示密码的好方法

C# 在PasswordBox中显示密码的好方法,c#,passwordbox,C#,Passwordbox,我想知道有谁知道如何在密码箱中显示密码。 您已经读到可以将文本框绑定到密码框,但这不是另一种方式。如果您希望密码可见,您应该使用文本框。密码框的唯一功能是屏蔽输入。它不提供额外的功能。还可以在运行时切换文本框和密码框密码框控件中没有任何内置属性显示密码字符。但我们可以通过TextBox控件在PasswordBox中显示密码来实现这一点。用于WPF中具有显示/隐藏功能的密码箱。我们将使用两个文本块控件,文本框控件,密码框控件,图像控件 XAML 但是如果我有一个文本框,我希望它看起来像一个密码框。

我想知道有谁知道如何在密码箱中显示密码。
您已经读到可以将文本框绑定到密码框,但这不是另一种方式。

如果您希望密码可见,您应该使用文本框。密码框的唯一功能是屏蔽输入。它不提供额外的功能。还可以在运行时切换文本框和密码框

密码框控件中没有任何内置属性显示密码字符。但我们可以通过TextBox控件在PasswordBox中显示密码来实现这一点。用于WPF中具有显示/隐藏功能的密码箱。我们将使用两个文本块控件,文本框控件,密码框控件,图像控件

XAML
但是如果我有一个文本框,我希望它看起来像一个密码框。所以当我在文本框中写的是点而不是字母,然后我有一个按钮来显示实际值。试试这个.myTextBox.PasswordChar='*'。让我们看看它是如何工作的“密码框的唯一功能是屏蔽输入”-只是想指出,WPF PasswordBox将值安全地存储在SecurePassword属性(即a)的内存中,而TextBox不这样做。为此,我一直使用TextBox。试试看,我还是想把这个值隐藏在textboxheh中,因为事实证明它并不简单。查看相关帖子-
<Grid>
    <TextBlock Text="Welcome&#xa;To see the Password"
               FontSize="28"
               FontWeight="Bold"
               HorizontalAlignment="Center"
               VerticalAlignment="Top"
               TextAlignment="Center"
               Margin="0,30,0,0" />
    <TextBlock Text="Enter your password"
               FontSize="20"
               HorizontalAlignment="Left"
               Margin="112,160,0,0"
               VerticalAlignment="Top" />
    <TextBox Height="40"
             FontSize="20"
             Padding="5,2,47,0"
             HorizontalAlignment="Left"
             Margin="112,193,0,0"
             Name="txtVisiblePasswordbox"
             VerticalAlignment="Top"
             Width="274" />
    <PasswordBox Height="40"
                 FontSize="20"
                 Padding="5,2,47,0" 
                 HorizontalAlignment="Left"
                 Margin="112,193,0,0"
                 Name="txtPasswordbox"
                 VerticalAlignment="Top"
                 Width="274"
                 PasswordChanged="txtPasswordbox_PasswordChanged" />
    <Image Visibility="Hidden"
           Height="30"
           HorizontalAlignment="Left"
           Name="ImgShowHide"
           Stretch="Fill"
           VerticalAlignment="Top"
           Width="30"
           Margin="351,198,0,0"
           MouseLeave="ImgShowHide_MouseLeave"
           PreviewMouseDown="ImgShowHide_PreviewMouseDown"
           PreviewMouseUp="ImgShowHide_PreviewMouseUp" />
</Grid>
string AppPath = Directory.GetCurrentDirectory();
public MainWindow()
{
    InitializeComponent();
    ImgShowHide.Source = new BitmapImage(new Uri(AppPath + "\\img\\clip.jpg"));
}
private void ImgShowHide_PreviewMouseUp(object sender, MouseButtonEventArgs e)
{
    HidePassword();
}

private void ImgShowHide_PreviewMouseDown(object sender, MouseButtonEventArgs e)
{
    ShowPassword();
}
private void ImgShowHide_MouseLeave(object sender, MouseEventArgs e)
{
    HidePassword();
}
private void txtPasswordbox_PasswordChanged(object sender, RoutedEventArgs e)
{
    if(txtPasswordbox.Password.Length > 0)
        ImgShowHide.Visibility = Visibility.Visible;
    else
        ImgShowHide.Visibility = Visibility.Hidden;
}

void ShowPassword()
{
    ImgShowHide.Source = new BitmapImage(new Uri(AppPath + "\\img\\cus.jpg"));
    txtVisiblePasswordbox.Visibility = Visibility.Visible;
    txtPasswordbox.Visibility = Visibility.Hidden;
    txtVisiblePasswordbox.Text = txtPasswordbox.Password;
}
void HidePassword()
{
    ImgShowHide.Source = new BitmapImage(new Uri(AppPath + "\\img\\clip.jpg"));
    txtVisiblePasswordbox.Visibility = Visibility.Hidden;
    txtPasswordbox.Visibility = Visibility.Visible;
    txtPasswordbox.Focus();
}