如何验证PasswordBox WPF

Son*_*hja 11 c# validation wpf

我正在尝试对a进行验证PasswordBox.为了进行验证,我按照此链接显示了如何验证TextBox.

问题来了PasswordBoxes.由于Password安全原因它不可绑定,我尝试在此链接后进行绑定(此处也解释了CodeProject用户).

所以,显然,太棒了!我可以绑定我PasswordBoxPassword属性,所以我可以绑定我的验证.但它忽略了我......

这是TextBox我使用的常规并且工作正常:

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

这是PasswordBox我试图模拟的:

<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>
Run Code Online (Sandbox Code Playgroud)

这就是我BindingExpression每个人的方式TextBox:

BindingExpression beUserName = textBoxUserName.GetBindingExpression(TextBox.TextProperty);
if (beUserName != null) beUserName.UpdateSource();
Run Code Online (Sandbox Code Playgroud)

这就是我得到它的方式PasswordBox:

BindingExpression bePassword = textBoxUserPass.GetBindingExpression(PasswordBoxAssistant.BoundPassword);
if (bePassword != null) bePassword.UpdateSource();
Run Code Online (Sandbox Code Playgroud)

如果我们犯了任何错误(在我的Validation类中定义),当我这样做时:

if (!beUserName.HasError && !bePassword.HasError)
Run Code Online (Sandbox Code Playgroud)

每一个BindingExpression应该说真正取决于错误的验证.但是因为我PasswordBox永远不会得到价值......任何想法?

Ric*_*ing 11

尝试设置ValidatesOnDataErrors=TrueValidatesOnExceptions=True绑定:

<PasswordBox ...
   local:PasswordBoxAssistant.BoundPassword="{Binding Path=Password,
      UpdateSourceTrigger=Explicit, 
      ValidatesOnDataErrors=True, 
      ValidatesOnExceptions=True}"
/>
Run Code Online (Sandbox Code Playgroud)