WPF 암호는 비 의존적 속성 종속성 속성으로 변환됩니다

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 " />

 

추천

출처www.cnblogs.com/dujian123/p/10953969.html