WPFMVVM模式 BaseViewModel

引用

在使用BaseViewModel时需要引用以下包:

using System.ComponentModel;
using System.Runtime.CompilerServices;

另外,如果在使用BaseViewModel时需要使用到异步编程(如使用async和await关键字),还需要引用以下包:

using System.Threading.Tasks;

BaseViewModel

BaseViewModel 是一个通用的基础类,通常用作 WPF/MVVM 架构中 ViewModel 的基类,其主要作用是提供了一些常用的功能和属性,以减少在具体 ViewModel 中的代码量,提高代码的复用性。

下面是一个简单的 BaseViewModel 示例:

public class BaseViewModel : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;

    protected void RaisePropertyChanged([CallerMemberName] string propertyName = null)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }
}

该 BaseViewModel 类实现了 INotifyPropertyChanged 接口,以支持 WPF 数据绑定机制。同时,提供了 RaisePropertyChanged 方法,用于通知数据绑定系统属性值的更改。使用 CallerMemberName 特性可以避免手动输入属性名称,减少出错的概率。

在具体的 ViewModel 类中,只需要继承该 BaseViewModel 类即可使用这些通用的属性和方法,例如:

public class LoginViewModel : BaseViewModel
{
    private string _username;
    public string Username
    {
        get => _username;
        set
        {
            _username = value;
            RaisePropertyChanged();
        }
    }
}

该 LoginViewModel 类继承了 BaseViewModel 类,并实现了一个字符串类型的 Username 属性,通过调用 RaisePropertyChanged 方法通知数据绑定系统属性值的更改。


using System.ComponentModel;
using System.Runtime.CompilerServices;

public class BaseViewModel : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;

    protected bool SetProperty<T>(ref T backingField, T value, [CallerMemberName] string propertyName = "")
    {
        if (EqualityComparer<T>.Default.Equals(backingField, value)) return false;

        backingField = value;
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
        return true;
    }
}

该方法的作用是为属性设置值,并自动触发 INotifyPropertyChanged 接口的 PropertyChanged 事件,通知数据绑定系统该属性的值已更改。这在 MVVM 模式中非常常见,因为通过数据绑定技术来更新用户界面时,该方法可以帮助我们实现自动更新。


总之,BaseViewModel 类可以帮助我们避免重复编写一些重复的代码,提高代码的可读性和可维护性。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

周杰伦fans

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值