接口应该说就是规定了某些属性或者行为,实现某接口就必须实现其抽象方法或属性。
有这么一个案例:
wpf中的passwordbox控件的password属性,是不能被viewmodel绑定的,不过可以通过SecurePassword来进行访问。
那绑定不了,我们在viewmodel中如何获取到view中的密码呢?
一般来说,我们的viewmodel中不应该含有任何和界面有关的东西,就是说viewmodel可能用于WPF,也可能用于IOS或者Andiord等。
这个时候,我们就可以用一个接口作为两者的连接桥梁。
首先,定义一个接口,其中只包含了一个属性。
/// <summary>
/// An interface for a class that can provide a secure password
/// </summary>
public interface IHavePassword
{
/// <summary>
/// The secure password
/// </summary>
SecureString SecurePassword { get; }
}
然后,view实现该接口,则必须实现其属性SecurePassword,该属性我们可以通过PasswordText.SecurePassword来获得到。
public SecureString SecurePassword => PasswordText.SecurePassword;
最后,我们可以通过某些button的命令绑定,赋予其绑定参数CommandParameter,将其绑定到这个view的Page.
然后,在viewmodel中,绑定的命令比如BindingCommand,里面有个参数,我们将其转为:
(parameter as IHave).SecurePassword,这样就可以获取到其密码啦。