1 개 패키지 PasswordBoxBindingHelper
공공 정적 클래스 PasswordBoxBindingHelper { 공공 정적 부울 GetIsPasswordBindingEnabled (DependencyObject에의 OBJ) { 반환 ( BOOL ) obj.GetValue (IsPasswordBindingEnabledProperty); } 공공 정적 무효 SetIsPasswordBindingEnabled (DependencyObject에의 OBJ, 부울 값) { obj.SetValue (IsPasswordBindingEnabledProperty, 값); } 공용 정적 판독 전용 DependencyProperty에 IsPasswordBindingEnabledProperty = DependencyProperty.RegisterAttached (" IsPasswordBindingEnabled " , 대해서 typeof ( BOOL ) 대해서 typeof (PasswordBoxBindingHelper) 새로운 UIPropertyMetadata ( 거짓 , OnIsPasswordBindingEnabledChanged)); 개인 정적 공극이 OnIsPasswordBindingEnabledChanged (DependencyObject에 OBJ, DependencyPropertyChangedEventArgs E) { VAR PasswordBox의 OBJ = 같은 PasswordBox의; 경우 (PasswordBox의! = null이 ) { passwordBox.PasswordChanged - = PasswordBoxPasswordChanged; 만약(( BOOL ) e.NewValue) { passwordBox.PasswordChanged + = PasswordBoxPasswordChanged; } } } // PasswordBox의 패스워드가 변경된 경우, 상기 버퍼 업데이트 정적 무효 PasswordBoxPasswordChanged ( 오브젝트 송신자 RoutedEventArgs E) { var에 PasswordBox의 = (PasswordBox의) 송신기를; 만약 (! String.Equals (GetBindedPassword (PasswordBox의), passwordBox.Password)) { SetBindedPassword (PasswordBox의, passwordBox.Password); } } 공용 정적 스트링 GetBindedPassword (DependencyObject에의 OBJ) { 창 ( 문자열 ) obj.GetValue (BindedPasswordProperty); } 공공 정적 무효 SetBindedPassword (OBJ DependencyObject에, 문자열 값) { obj.SetValue (BindedPasswordProperty, 값); } 공공 정적 읽기 전용 DependencyProperty에 BindedPasswordProperty = DependencyProperty.RegisterAttached ( " BindedPassword " , 대해서 typeof ( 문자열 ) 대해서 typeof (PasswordBoxBindingHelper) 새로운 UIPropertyMetadata ( 문자열 .Empty, OnBindedPasswordChanged)); // 버퍼가 변경되면 PasswordBox의 암호 upate 개인 정적 공극이 (DependencyObject에 OBJ, OnBindedPasswordChanged DependencyPropertyChangedEventArgs E) { VAR PasswordBox의 OBJ = 같은 PasswordBox의; 경우 (PasswordBox의! = null이 ) { passwordBox.Password = e.NewValue == null이 ?문자열.Empty : e.NewValue.ToString (); } } }
2 인터페이스 XAML 바인딩 속성
<PasswordBox의 헬퍼 : PasswordBoxBindingHelper.IsPasswordBindingEnabled = " 참 " 위해 Grid.Row = " 4 " Grid.Column을 = " 1 " 높이 = " 27 " 마진 = " 208,6.6,213.6,6.4 " 헬퍼 : PasswordBoxBindingHelper.BindedPassword = " {바인딩 경로 = 비밀번호, 모드 = 양방향, UpdateSourceTrigger = LostFocus} " PasswordChanged = " TxtPassword_PasswordChanged " />