[WPF]实现密码框的密码绑定

本文介绍了如何在WPF中实现PasswordBox控件的密码绑定,尤其是在MVVM模式下。由于Password属性不支持直接绑定,文章提出了通过创建一个附加属性(Attached Property)作为缓冲区,并监听PasswordBox的PasswordChanged事件来同步密码。当密码改变时,更新缓冲区,反之亦然。此外,还提供了在密码更改后更新密码框插入符位置的解决方案。
摘要由CSDN通过智能技术生成
                                                 [WPF]实现密码框的密码绑定
                                                           周银辉

正如绑定TextBox控件的Text属性一样, 我们希望能够将PasswordBox空间的Password属性进行绑定, 比如在MVVM模式中,这似乎是必须的, 但可惜的是, Password属性是不支持绑定的(不是依赖属性, 也没有实现INotifyPropertyChanged).
这可能是出于安全性的考虑. 但在我们的系统为了实现View层密码框中的密码与后台其它层之间的密码属性之间的绑定, 可以采取如下思路: 将密码框的密码和某一个缓冲区进行同步, 缓冲区在和后台进行绑定. 其中密码框与缓冲区之间的同步可采用事件进行通知, 并将缓冲区打造成依赖属性, 然后缓冲区就支持绑定了, 并给后台提供正确的密码.
缓冲区可以是哈希表或其他字典结构, 以便将密码框和缓冲区中的密码一 一对应起来, 也可以使AttachProperty(附加属性), 其实附加属性的机制也就是对缓存了的一个大字典进行操作

     public   static   class  PasswordBoxBindingHelper
    {
        
public   static   bool  GetIsPasswordBindingEnabled(DependencyObject obj)
        {
            
return  ( bool )obj.GetValue(IsPasswordBindingEnabledProperty);
        }

        
public   static   void  SetIsPasswordBindingEnabled(DependencyObject obj,  bool  value)
        {
            obj.SetValue(IsPasswordBindingEnabledProperty, value);
        }

        
public   static   readonly  DependencyProperty IsPasswordBindingEnabledProperty  =
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值