我正在尝试为
问题出现在
看起来非常棒!我可以将
这是我使用且正常工作的普通
如果在我的验证类中定义了任何错误,当我执行以下操作时:
每个BindingExpression应该根据错误验证的情况说出true或false。但是对于我的PasswordBox,从未收到值...有什么想法吗?
PasswordBox
创建验证。为了进行验证,我遵循了link中所示的方法,该方法展示了如何在TextBox
上进行验证。问题出现在
PasswordBoxes
上。由于安全原因,它的Password
属性不可绑定,因此我尝试按照this link(对于CodeProject用户,在here中也有说明)来进行绑定。看起来非常棒!我可以将
PasswordBox
与其Password
属性绑定,然后可以进行验证。但是它却不理我...这是我使用且正常工作的普通
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();
这就是我为PasswordBox
获取它的方式:
BindingExpression bePassword = textBoxUserPass.GetBindingExpression(PasswordBoxAssistant.BoundPassword);
if (bePassword != null) bePassword.UpdateSource();
如果在我的验证类中定义了任何错误,当我执行以下操作时:
if (!beUserName.HasError && !bePassword.HasError)
每个BindingExpression应该根据错误验证的情况说出true或false。但是对于我的PasswordBox,从未收到值...有什么想法吗?
ValidatesOnDataErrors=True
和ValidatesOnExceptions=True
吗? - Richard DeemingBoundPassword
附加属性:local:PasswordBoxAssistant.BoundPassword="{Binding Path=Password, UpdateSourceTrigger=Explicit, ValidatesOnDataErrors=True, ValidatesOnExceptions=True}"
- Richard Deeming