But for my PasswordBox never gets the value. If we made any mistake (defined on my Validation class), when I do this: if (!beUserName.HasError & !bePassword.HasError)Įach BindingExpression should say true of false depending on error validations. If (bePassword != null) bePassword.UpdateSource() If (beUserName != null) beUserName.UpdateSource() Īnd this is how I get it for the PasswordBox: BindingExpression bePassword = textBoxUserPass.GetBindingExpression(PasswordBoxAssistant.BoundPassword) This is how I get the BindingExpression for each TextBox: BindingExpression beUserName = textBoxUserName.GetBindingExpression(TextBox.TextProperty) This is a regular TextBox that I use and works fine: Īnd this is the PasswordBox I tried to simulate: So, apparently, fantastic! I can bind my PasswordBox with its Password property, so then I can bind with my validation. Because its Password is not bindable due to security reasons, I tried to make a binding following this link (also explained here, for CodeProject users). For making validations I followed this link, that shows how to validate on TextBox. I'm trying to make a validation for a PasswordBox. ((MyObject)DataContext).SecurePassword = MyPassword.SecurePassword this should trigger binding and therefore validation Private void MyPassword_Changed(object sender, RoutedEventArgs e) MyPassword.SetBinding(SecurePasswordProperty, passwordBinding) you can configure other binding stuff here Public static readonly DependencyProperty SecurePasswordProperty =ĭependencyProperty.RegisterAttached("SecurePassword", typeof(SecureString), typeof(MyWindow)) ĭataContext = myObject // created somewhereīinding passwordBinding = new Binding(SecurePasswordProperty.Name) Then, the corresponding Window code like this will trigger PasswordBox binding: // add a custom DependencyProperty If (SecurePassword = null || SecurePassword.Length = 0)Īnd a Window Xaml with a PasswordBox like this: this is where I code my custom business rule Listing 1 shows the full definition of this Attached Property, including its change-method. If (memberName = "SecurePassword" || memberName = null) You first need to cast it and make sure the cast worked, as people could set this property on objects other than Grids), parse the property value, and then add appropriate row definitions to the Grid object. Private string Validate(string memberName) Set Mode=TwoWay on your binding local:PasswordBoxAssistant.BoundPassword=" Try setting ValidatesOnDataErrors=True and ValidatesOnExceptions=True on your binding:
0 Comments
Leave a Reply. |