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