为什么silverlight的PasswordBox控件的password属性不可以绑定?该如何实现绑定?

有人发现想Password的控件中实现如下的绑定,

Code

后代代码:

 

 

Code

却总是报错。

原因是PasswordBox的password属性并没有相应的DependencyProperty(依赖属性),所以就不可以实现绑定。

但是你可以暴露出来一个依赖属性,在内存中存储PasswordBox的文本,PasswordBox 可以对他的文本进行加密并且只在调用密码CLR属性时生成普通的文本。

如下所示:

1. 定义一个PasswordBoxHelper 类,并注册一个依赖属性PasswordBind

Code

 2. 你就可以绑定到你的PasswordBox 控件上在xaml代码中:

<PasswordBox o:PasswordHelper.PasswordBind="{Binding Path=Password, Source={StaticResource mainController}}" />

由于使用的绑定方式是OneWay, 所以PasswordBox的Password属性的值只会随着数据源而改变,当用户输入密码时并不能改变数据源绑定的值,因为用户输入的值只是关联到Password的password属性,而不是附加的属性passwordbind。

如果要检查用户的输入,需要使用PasswordBox的事件PasswordChanged。

参考链接:http://www.silverlightissues.com/issue.php5?i=68

 

posted @ 2009-04-13 15:23  Amanda2007  阅读(697)  评论(0编辑  收藏  举报