PasswordBox.Password属性不是依赖属性,因此无法实现Binding,在采用MVVM框架设计程序时,不能直接完成Model-View之间的通信,为了解决这个问题,该篇将提供一个解决方案:
供给PasswordBox一个依赖属性,并为其实现与Password的数值同步。
由于PasswordBox被sealed修饰,阻止了其他类继承自该类,所以使用附加属性。数据源与依赖属性双向绑定,以实现后台逻辑对界面的控制、界面的变化对后台数据的更新。图:
代码:
public static class PasswordBoxAttachProperty
{
#region 密码值
public static readonly DependencyProperty PasswordValueProperty =
DependencyProperty.RegisterAttached("PasswordValue", typeof(string), typeof(PasswordBoxAttachProperty), new FrameworkPropertyMetadata(null, OnIsPasswordValueChanged));
[AttachedPropertyBrowsableForType(typeof(PasswordBox))]
public static string GetPasswordValue(DependencyObject obj)
{