1 public class PasswordBoxHelper 2 { 3 public static readonly DependencyProperty PasswordProperty = DependencyProperty.RegisterAttached("Password", typeof(string), typeof(PasswordBoxHelper), 4 new PropertyMetadata(new PropertyChangedCallback(OnPropertyChanged))); 5 6 public static string GetPassword(DependencyObject d) 7 { 8 return (string)d.GetValue(PasswordProperty); 9 } 10 public static void SetPassword(DependencyObject d, string value) 11 { 12 d.SetValue(PasswordProperty, value); 13 } 14 15 public static readonly DependencyProperty AttachProperty = DependencyProperty.RegisterAttached("Attach", typeof(string), typeof(PasswordBoxHelper), 16 new PropertyMetadata(new PropertyChangedCallback(OnAttachChanged))); 17 18 public static string GetAttach(DependencyObject d) 19 { 20 return (string)d.GetValue(PasswordProperty); 21 } 22 public static void SetAttach(DependencyObject d, string value) 23 { 24 d.SetValue(PasswordProperty, value); 25 } 26 27 static bool _isUpdating = false; 28 private static void OnPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) 29 { 30 PasswordBox pb = (d as PasswordBox); 31 pb.PasswordChanged -= Pb_PasswordChanged; 32 if (!_isUpdating) 33 (d as PasswordBox).Password = e.NewValue.ToString(); 34 pb.PasswordChanged += Pb_PasswordChanged; 35 } 36 37 private static void OnAttachChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) 38 { 39 PasswordBox pb = (d as PasswordBox); 40 pb.PasswordChanged += Pb_PasswordChanged; 41 } 42 43 private static void Pb_PasswordChanged(object sender, RoutedEventArgs e) 44 { 45 PasswordBox pb = (sender as PasswordBox); 46 _isUpdating = true; 47 SetPassword(pb, pb.Password); 48 _isUpdating = false; 49 } 50 }
标签:PasswordChanged,string,c#,PasswordBox,pb,static,PasswordBoxHelper,public From: https://www.cnblogs.com/zhaosanmao/p/17555127.html