MvvmGen - 你的代码生成小助手

🚀 MvvmGen - 你的代码生成小助手

mvvmgenMvvmGen is a lightweight MVVM library for XAML applications. It generates your ViewModels on-the-fly for you via a Roslyn-based C# Source Generator.项目地址:https://gitcode.com/gh_mirrors/mv/mvvmgen

MvvGMgen 是一款轻量级的现代MVVM库,基于C#源码生成器(.NET Standard 2.0),专为使用WPF、WinUI、Uno Platform、Avalonia、Xamarin Forms或.NET MAUI构建的XAML应用程序设计,帮助你轻松应用著名的模型-视图-视图模型模式(MVVM)。

该项目采用MIT许可证,并且提供详细的文档和示例,助你快速上手。

快速启动:让生成器为你编写代码

只需安装NuGet包MvvmGen,这个库就会作为一个C#源代码生成器在你的项目中注册,从此,那些重复的模板代码将由MvvmGen代劳。

创建一个ViewModel类非常简单。定义一个partial类,并添加ViewModel属性:

using MvvmGen;

namespace MyWpfApp.ViewModel
{
  [ViewModel]
  public partial class EmployeeViewModel
  {
  }
}

MvvmGen会自动生成另一个部分类,类似于这样的结构:

using MvvmGen.Commands;
using MvvmGen.ViewModels;

namespace MyWpfApp.ViewModel
{
    partial class EmployeeViewModel : ViewModelBase
    {
        public EmployeeViewModel()
        {
            this.OnInitialize();
        }

        partial void OnInitialize();
    }
}

你可以直接在Visual Studio的依赖项>分析器下查看生成的类。

除了ViewModel属性,还有许多其他特性,如Property, Command, 和 Event等,它们可以帮助你构建更复杂的ViewModel,例如:

using MvvmGen;
using MvvmGen.Events;

namespace MyWpfApp.ViewModel
{
  public record EmployeeSavedEvent(string FirstName, string LastName);

  [Inject(typeof(IEventAggregator))]
  [ViewModel]
  public partial class EmployeeViewModel
  {
    [Property] private string _firstName;
    [Property] private string _lastName;

    [Command(CanExecuteMethod = nameof(CanSave))]
    private void Save()
    {
      EventAggregator.Publish(new EmployeeSavedEvent(FirstName, LastName));
    }

    [CommandInvalidate(nameof(FirstName))]
    private bool CanSave()
    {
      return !string.IsNullOrEmpty(FirstName);
    }
  }
}

MvvmGen会帮你生成这样的实现:

//...
 partial class EmployeeViewModel : ViewModelBase
{
    //...

    public string FirstName
    {
      get => _firstName;
      set
      {
        if (_firstName != value)
        {
          _firstName = value;
          OnPropertyChanged("FirstName");
        }
      }
    }

    public string LastName
    {
      get => _lastName;
      set
      {
        if (_lastName != value)
        {
          _lastName = value;
          OnPropertyChanged("LastName");
        }
      }
    }

    //...
  }
}

项目特点

  1. 简洁高效:MvvmGen利用C#源码生成器,自动化处理常见MVVM模式下的模板代码,提高开发效率。
  2. 灵活定制:通过各种特性,你可以自定义ViewModel的行为,比如命令执行条件、属性变更通知等。
  3. 兼容性广泛:支持多种XAML框架,包括WPF、WinUI、Uno Platform、Avalonia、Xamarin.Forms和.NET MAUI。
  4. 易于集成:通过NuGet包轻松引入,无需额外配置,即可开始工作。

想要了解更多细节,请访问项目中的文档,开始你的无模板代码之旅吧!

现在就加入MvvmGen的世界,让你的代码更优雅,开发更流畅!

mvvmgenMvvmGen is a lightweight MVVM library for XAML applications. It generates your ViewModels on-the-fly for you via a Roslyn-based C# Source Generator.项目地址:https://gitcode.com/gh_mirrors/mv/mvvmgen

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

马冶娆

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

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

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

打赏作者

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

抵扣说明:

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

余额充值