简介

用了 Community MvvmToolKit 之后,感觉再也回不去了,这个框架其实就是帮你生成代码,以前写属性绑定都是要自己手写很多内容,要先写一个 ModelBase 实现 INotifyPropertyChanged 接口,在里面实现 RaisePropertyChanged 方法,然后写一个绑定属性要写成下面这么一长串

private string number;
public string Number
{
    get => number;
    set
    {
        if (value != number)
        {
            number = value;
            RaisePropertyChanged(nameof(Number));
        }
    }
}

但是有了 Community MvvmToolKit 之后,你只需要写

[ObservableProperty]
private string number;

这样就行了,然后分析器会在后台给你生成上面的代码,这个只是帮你生成代码,无任何运行时性能损耗,代码看起了也很整洁。

还有更多的特性,可以看看下面的教学索引。

ComunityMvvmToolKit 基本教学

关于 ComunityMvvmToolKit 框架的使用,可以看下面这两个教程,已经讲得很详细了,这里就不献丑了。

如何在.NetFramework 上使用 Community MvvmToolKit 框架?

二开的项目基本都是Framework项目,要在上面用Community MvvmToolKit,其实感觉还是挺费劲的,折腾了好久,折腾出下面3种方案。

  1. 添加一个.net standard2.0 的项目,在 standard 项目上引用 MvvmToolKit,然后.Net framework项目引用这个 standard 项目。
  2. 升级 Net framework 项目文件到最新的 SDK 版本。这样就可以使用分析器功能。可以使用升级助手升级:upgrade assistant

    这一点,坑有点多,会导致有些老旧的 dll 不能正常使用之类的问题。
  3. 直接在 netframwork 项目上引用 MvvmToolKit 的分析器。

第三点目前试出来,没有太大问题,主要就是要自己手动添加这个CommunityToolkit.Mvvm.SourceGenerators.dll分析器。另外一个CommunityToolkit.Mvvm.CodeFixers.dll貌似怎么也都添加不了,不过无所谓,主要是代码生成器可以使用就行。

之前一直是使用的第一种方案,但第一种方案把 ViewModel 和 Model 给分开在两个项目了,代码结构比较分散。目前第三种方案还没发现什么问题,代码是可以正常生成的。