首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何验证PasswordBox WPF

如何验证PasswordBox WPF
EN

Stack Overflow用户
提问于 2013-02-27 12:35:30
回答 4查看 19.3K关注 0票数 14

我正在尝试对一个PasswordBox进行验证。为了进行验证,我遵循了这个链接,这说明了如何在TextBox上进行验证。

PasswordBoxes带来了问题。因为由于安全原因,它的Password不可绑定,所以我尝试在此链接之后进行绑定(对于CodeProject用户也解释了这里 )。

所以,很显然,太棒了!我可以用它的PasswordBox属性绑定我的Password,这样我就可以绑定我的验证了。但它忽略了我..。

这是一个普通的TextBox,我使用它并运行得很好:

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

这就是我试图模拟的PasswordBox

代码语言:javascript
复制
<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>

这就是我如何为每个BindingExpression获得TextBox

代码语言:javascript
复制
BindingExpression beUserName = textBoxUserName.GetBindingExpression(TextBox.TextProperty);
if (beUserName != null) beUserName.UpdateSource();

这就是我如何为PasswordBox得到的

代码语言:javascript
复制
BindingExpression bePassword = textBoxUserPass.GetBindingExpression(PasswordBoxAssistant.BoundPassword);
if (bePassword != null) bePassword.UpdateSource();

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

代码语言:javascript
复制
if (!beUserName.HasError && !bePassword.HasError)

根据错误验证,每个BindingExpression都应该说true of false。但我的PasswordBox永远得不到价值..。有什么想法吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-02-27 14:50:17

尝试在绑定上设置ValidatesOnDataErrors=TrueValidatesOnExceptions=True

代码语言:javascript
复制
<PasswordBox ...
   local:PasswordBoxAssistant.BoundPassword="{Binding Path=Password,
      UpdateSourceTrigger=Explicit, 
      ValidatesOnDataErrors=True, 
      ValidatesOnExceptions=True}"
/>
票数 12
EN

Stack Overflow用户

发布于 2013-07-03 19:36:26

在绑定上设置Mode=TwoWay

代码语言:javascript
复制
local:PasswordBoxAssistant.BoundPassword="{Binding Path=Password,Mode=TwoWay,
UpdateSourceTrigger=Explicit}"
票数 3
EN

Stack Overflow用户

发布于 2013-02-27 13:49:10

据我所知,在PasswordBox上添加验证的唯一方法是在SecurePassword绑定属性的setter中抛出一个新的ValidationException。PasswordBoxAssistant不会帮你这个忙。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15112292

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档