加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 如何验证PasswordBox WPF

发布时间:2020-12-15 06:29:19 所属栏目:百科 来源:网络整理
导读:我试图验证一个PasswordBox.对于进行验证,我遵循这个 link,这显示了如何在TextBox上进行验证. 密码盒出现问题.由于密码由于安全性原因而无法绑定,所以我试图在this link之后进行绑定(对于CodeProject用户也已解释为here). 所以,显然,太棒了!我可以绑定我的
我试图验证一个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}"
/>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读