Working With WPF PasswordBox Using C# and XAML

Introduction

WPF comes with a built-in PasswordBox control that allows you to handle and manage passwords in a WPF application. A PasswordBox control as a TextBox control with masking feature enabled. The PasswordBox control allows you to hide the characters and limit the number of characters to be typed in the editable area.

This article demonstrates how to create and use a PasswordBox control in WPF using XAML and C#.

Properties

The PasswordBox element in XAML represents a PasswordBox control. The following code snippet creates a PasswordBox and sets a few of its properties such as Height, Width, Foreground, and Background.

  1. <PasswordBox Height="42" Width="200" Margin="22,28,28,0" Name="passwordBox1" VerticalAlignment="Top" Background="LightBlue" Foreground="DarkBlue" />  

The default PasswordBox looks like Figure 1.

WPF Password TextBox
Figure 1

The MaxLength property is used to get and set the maximum number of characters you can enter in a PasswordBox.

The Password property is used to get and set the current password in a PasswordBox.

The PasswordBox is not a PasswordBox without its masking feature. The PasswordChar property is used to get and set the masking character for the PasswordBox. The default masking character is a dot.

The following code snippets sets the MaxLength, PasswordChar, and Password properties of a PasswordBox control.

  1. <PasswordBox Height="42" Width="200" Margin="22,28,28,0" Name="passwordBox1" VerticalAlignment="Top" Background="LightBlue" Foreground="DarkBlue" MaxLength="25" PasswordChar="*" Password="mahesh" />  

The output looks like Figure 2. The editing will stop as soon as you type 25 characters in the PasswordBox.

25 characters in the PasswordBox
Figure 2

The SecurePassword property gets the password currently held by the PasswordBox as a SecureString. The SecureString represents text that should be kept confidential. The text is encrypted for privacy when being used, and deleted from computer memory when no longer needed.

Events

Besides the above discussed properties, the PasswordBox has a very important event called PasswordChanged. This event occurs when the value of the Password property is changed. The following code snippet sets this property and shows a property event handler.

  1. <PasswordBox Height="42" Width="200" Margin="22,28,28,0" Name="passwordBox1" VerticalAlignment="Top" Background="LightBlue" Foreground="DarkBlue" MaxLength="25" PasswordChar="*" Password="mahesh" PasswordChanged="passwordBox1_PasswordChanged" />  

Here is the PasswordChanged event handler. You may want to use this property when you need to execute some code when a password is changed.

  1. privatevoid passwordBox1_PasswordChanged(object sender, RoutedEventArgs e)  
  2. {  
  3.    MessageBox.Show("Password changed");  
  4. }  

Create a PasswordBox Dynamically

The following code snippet creates a PasswordBox and sets its properties at run-time.

  1. privatevoid CreatePasswordBoxDynamically() {  
  2.     PasswordBox pw = newPasswordBox();  
  3.     pw.Height = 30;  
  4.     pw.Width = 200;  
  5.     pw.Background = newSolidColorBrush(Colors.LightBlue);  
  6.     pw.Foreground = newSolidColorBrush(Colors.DarkBlue);  
  7.     pw.MaxLength = 25;  
  8.     pw.PasswordChar = '*';  
  9.     RootLayout.Children.Add(pw);  
  10. }  

Here is the code-behind sample written in Visual Basic .NET.

  1. Sub CreatePasswordBoxDynamically()  
  2. Dim pw AsNew PasswordBox()  
  3. pw.Height = 30  
  4. pw.Width = 200  
  5. pw.Background = New SolidColorBrush(Colors.LightBlue)  
  6. pw.Foreground = New SolidColorBrush(Colors.DarkBlue)  
  7. pw.MaxLength = 25  
  8. pw.PasswordChar = "*"  
  9. RootLayout.Children.Add(pw)  
  10. EndSub  

Summary

In this article, we learned how to create and use a PasswordBox control in WPF using XAML and C#.


Mindcracker
Founded in 2003, Mindcracker is the authority in custom software development and innovation. We put best practices into action. We deliver solutions based on consumer and industry analysis.