我试图验证一个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从来没有获得价值…任何想法?