🚀 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");
}
}
}
//...
}
}
项目特点
- 简洁高效:MvvmGen利用C#源码生成器,自动化处理常见MVVM模式下的模板代码,提高开发效率。
- 灵活定制:通过各种特性,你可以自定义ViewModel的行为,比如命令执行条件、属性变更通知等。
- 兼容性广泛:支持多种XAML框架,包括WPF、WinUI、Uno Platform、Avalonia、Xamarin.Forms和.NET MAUI。
- 易于集成:通过NuGet包轻松引入,无需额外配置,即可开始工作。
想要了解更多细节,请访问项目中的文档,开始你的无模板代码之旅吧!
现在就加入MvvmGen的世界,让你的代码更优雅,开发更流畅!
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考