Comment valider PasswordBox WPF

Je suis en train de faire une validation pour un PasswordBox. Pour faire des validations j'ai suivi ce lienqui montre comment valider sur TextBox.

Le problème vient PasswordBoxes. Comme c'est Password n'est pas bindable pour des raisons de sécurité, j'ai essayé de faire une liaison suivant ce lien (également expliqué icipour CodeProject utilisateurs).

Donc, apparemment, fantastique!!!! Je peux lier mon PasswordBox avec ses Password bien, alors je peux lier avec ma validation. Mais il m'ignore...

C'est un régulier TextBox que j'utilise et qui fonctionne bien:

<local:ErrorProvider Grid.Column="1" Grid.Row="2" >
    <TextBox Width="160" 
          HorizontalAlignment="Left" 
           Name="textBoxUserPass" 
           Text="{Binding Path=Password, UpdateSourceTrigger=Explicit}" />
 </local:ErrorProvider>

Et c'est le PasswordBox j'ai essayé de simuler:

<local:ErrorProvider Grid.Column="1" Grid.Row="2" >
      <PasswordBox Width="160"
          HorizontalAlignment="Left"
          Name="textBoxUserPass"
          local:PasswordBoxAssistant.BindPassword="True"
          local:PasswordBoxAssistant.BoundPassword="{Binding Path=Password, UpdateSourceTrigger=Explicit}" />
 </local:ErrorProvider>

C'est la façon dont je reçois la BindingExpression pour chaque TextBox:

BindingExpression beUserName = textBoxUserName.GetBindingExpression(TextBox.TextProperty);
if (beUserName != null) beUserName.UpdateSource();

Et c'est de cette façon que je l'obtenir pour la PasswordBox:

BindingExpression bePassword = textBoxUserPass.GetBindingExpression(PasswordBoxAssistant.BoundPassword);
if (bePassword != null) bePassword.UpdateSource();

Si nous avons fait une erreur (défini sur ma Validation de classe), quand je fais ceci:

if (!beUserName.HasError && !bePassword.HasError)

chaque BindingExpression faut dire vrai de faux en fonction de l'erreur de validation. Mais pour ma PasswordBox n'est jamais la valeur... une idée?

source d'informationauteur Sonhja | 2013-02-27