c# – 如何验证PasswordBox WPF

前端之家收集整理的这篇文章主要介绍了c# – 如何验证PasswordBox WPF前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图验证一个PasswordBox.对于进行验证,我遵循这个 link,这显示了如何在TextBox上进行验证.

密码盒出现问题.由于密码由于安全性原因而无法绑定,所以我试图在this link之后进行绑定(对于CodeProject用户也已解释为here).

所以,显然,太棒了!我可以绑定我的密码框与其密码属性,所以我可以绑定我的验证.但它忽略了我…

这是一个常规的TextBox,我使用和工作正常:

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

这是我试图模拟的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>

这是我如何获得每个TextBox的BindingExpression:

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

这是我如何得到它的密码框:

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

如果我们犯了错误(在我的验证类中定义),当我这样做:

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

根据错误验证,每个BindingExpression应该将其设为false.但是对于我的PasswordBox从来没有获得价值…任何想法?

解决方法

尝试设置ValidatesOnDataErrors = True和ValidatesOnExceptions = True对您的绑定:
<PasswordBox ...
   local:PasswordBoxAssistant.BoundPassword="{Binding Path=Password,UpdateSourceTrigger=Explicit,ValidatesOnDataErrors=True,ValidatesOnExceptions=True}"
/>

猜你在找的C#相关文章