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 If (memberName = "SecurePassword" || memberName = null) 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. |