Son*_*hja 11 c# validation wpf
我正在尝试对a进行验证PasswordBox
.为了进行验证,我按照此链接显示了如何验证TextBox
.
问题来了PasswordBoxes
.由于Password
安全原因它不可绑定,我尝试在此链接后进行绑定(此处也解释了CodeProject用户).
所以,显然,太棒了!我可以绑定我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>
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=True
和ValidatesOnExceptions=True
绑定:
<PasswordBox ...
local:PasswordBoxAssistant.BoundPassword="{Binding Path=Password,
UpdateSourceTrigger=Explicit,
ValidatesOnDataErrors=True,
ValidatesOnExceptions=True}"
/>
Run Code Online (Sandbox Code Playgroud)