你的位置:首页 > 软件开发 > ASP.net > WPF PasswordBox MVVM 实现

WPF PasswordBox MVVM 实现

发布时间:2015-10-22 13:00:13
由于PasswordBox.Password属性非依赖属性,所以不能作为绑定的目标,以下是本人的MVVM实现方法。 通过Behavior添加PasswordChanged事件的事件处理器,以及自定义一个附加属性实现绑定,Behavior需要引用System.Windows.I ...

由于PasswordBox.Password属性非依赖属性,所以不能作为绑定的目标,以下是本人的MVVM实现方法。

 

通过Behavior添加PasswordChanged事件的事件处理器,以及自定义一个附加属性实现绑定,Behavior需要引用System.Windows.Interactivity.dll,代码如下:

using System.Windows;using System.Windows.Controls;using System.Windows.Interactivity;namespace PasswordHelperTest{  public static class PasswordBoxHelper  {    public static readonly DependencyProperty PasswordProperty =      DependencyProperty.RegisterAttached("Password",      typeof(get='_blank'>string), typeof(PasswordBoxHelper),      new FrameworkPropertyMetadata(string.Empty, OnPasswordPropertyChanged));    private static void OnPasswordPropertyChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)    {      PasswordBox passwordBox = sender as PasswordBox;      string password = (string)e.NewValue;      if (passwordBox != null && passwordBox.Password != password)      {        passwordBox.Password = password;      }    }    public static string GetPassword(DependencyObject dp)    {      return (string)dp.GetValue(PasswordProperty);    }    public static void SetPassword(DependencyObject dp, string value)    {      dp.SetValue(PasswordProperty, value);    }  }  public class PasswordBoxBehavior : Behavior<PasswordBox>  {    protected override void OnAttached()    {      base.OnAttached();      AssociatedObject.PasswordChanged += OnPasswordChanged;    }    private static void OnPasswordChanged(object sender, RoutedEventArgs e)    {      PasswordBox passwordBox = sender as PasswordBox;      string password = PasswordBoxHelper.GetPassword(passwordBox);      if (passwordBox != null && passwordBox.Password != password)      {        PasswordBoxHelper.SetPassword(passwordBox, passwordBox.Password);      }    }    protected override void OnDetaching()    {      base.OnDetaching();      AssociatedObject.PasswordChanged -= OnPasswordChanged;    }  }}

 

海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com

原标题:WPF PasswordBox MVVM 实现

关键词:wpf

wpf
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。