关于接口interface的新发现

接口应该说就是规定了某些属性或者行为,实现某接口就必须实现其抽象方法或属性。

有这么一个案例:

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,这样就可以获取到其密码啦。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值