Hi,
I've read in a few places that there's no Dependency Properties attached to the Password Box in WPF and the work around is through Attached Properties. I've found a couple of blogs which show how to do this. This is what I have in my code:
But, when I build the solution, it throws an error:
The property 'BoundPasswordBox.BoundPassword' does not exist in XML namespace
The attachable property 'BoundPassword' was not found in type 'BoundPasswordBox'.
Any help would be appreciated
I've read in a few places that there's no Dependency Properties attached to the Password Box in WPF and the work around is through Attached Properties. I've found a couple of blogs which show how to do this. This is what I have in my code:
namespace WPFApplication2
{
public class BoundPasswordBox
{
#region BoundPassword
private static bool _updating = false;
/// <summary>
/// BoundPassword Attached Dependency Property
/// </summary>
public static readonly DependencyProperty BoundPasswordProperty =
DependencyProperty.RegisterAttached("BoundPassword",
typeof(string),
typeof(BoundPasswordBox),
new FrameworkPropertyMetadata(string.Empty, OnBoundPasswordChanged));
/// <summary>
/// Gets the BoundPassword property.
/// </summary>
public static string GetBoundPassword(DependencyObject d)
{
return (string)d.GetValue(BoundPasswordProperty);
}
/// <summary>
/// Sets the BoundPassword property.
/// </summary>
public static void SetBoundPassword(DependencyObject d, string value)
{
d.SetValue(BoundPasswordProperty, value);
}
/// <summary>
/// Handles changes to the BoundPassword property.
/// </summary>
private static void OnBoundPasswordChanged(
DependencyObject d,
DependencyPropertyChangedEventArgs e)
{
PasswordBox password = d as PasswordBox;
if (password != null)
{
// Disconnect the handler while we're updating.
password.PasswordChanged -= PasswordChanged;
}
if (e.NewValue != null)
{
if (!_updating)
{
password.Password = e.NewValue.ToString();
}
}
else
{
password.Password = string.Empty;
}
// Now, reconnect the handler.
password.PasswordChanged += new RoutedEventHandler(PasswordChanged);
}
/// <summary>
/// Handles the password change event.
/// </summary>
static void PasswordChanged(object sender, RoutedEventArgs e)
{
PasswordBox password = sender as PasswordBox;
_updating = true;
SetBoundPassword(password, password.Password);
_updating = false;
}
#endregion
}
}
And this is my Corresponding XAML Code:<Window x:Class="WpfApplication2.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525"
xmlns:ff="clr-namespace:WpfApplication2;assembly=WpfApplication2"><Grid><PasswordBox HorizontalAlignment="Left" Height="32" Margin="60,110,0,0" VerticalAlignment="Top" Width="122"
ff:BoundPasswordBox.BoundPassword="{Binding Path=Password,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/></Grid></Window>But, when I build the solution, it throws an error:
The property 'BoundPasswordBox.BoundPassword' does not exist in XML namespace
The attachable property 'BoundPassword' was not found in type 'BoundPasswordBox'.
Any help would be appreciated
Abhi