用途
WPF MVVM Generator 是一个用于 WPF 项目的代码生成技能,借助 CommunityToolkit.Mvvm 源生成器(source generator)来创建 MVVM 组件。当需要为新 WPF 功能或实体搭建脚手架时使用。
主要能力
技能接收两个参数:
- $ARGUMENTS[0]:实体名称(必填),例如 User、Product、Order。
- $ARGUMENTS[1]:生成类型(可选),可选值为 viewmodel、view、model、all,默认值为 all。
当选择 all 时,会生成 Model、ViewModel、View、Code-Behind、Messages 以及 Service Interface 全部内容。
生成内容包括:
- Model:sealed class,包含 required 属性(如 Id、Name)以及根据上下文补充的属性。
- ViewModel:partial class 继承 ObservableObject,使用 [ObservableProperty]、[NotifyPropertyChangedFor]、[NotifyCanExecuteChangedFor]、[RelayCommand] 等特性,包含 Load、Save、Delete 异步命令,支持 CancellationToken,并通过 WeakReferenceMessenger 发送消息。
- View:UserControl XAML,包含 Header、Content、Actions 按钮区以及 Loading 遮罩层,使用 d:DataContext 设计时实例。
- Code-Behind:最小化实现,仅调用 InitializeComponent。
- Message Types:使用 sealed record 定义 Deleted、Selected、Saved 消息。
- Service Interface:定义 GetAllAsync、GetByIdAsync、SaveAsync、DeleteAsync 方法。
使用方式
技能按以下步骤执行:
- 参数校验:若实体名称为空,则向用户请求,或基于项目现有 Model 提出建议;校验名称是否为 PascalCase、是否为 C# 保留字、是否含特殊字符或空格,不符合则要求重新输入。
- 项目结构探索:通过 Glob("**/*ViewModel.cs") 识别现有 ViewModel 模式,从首个匹配文件提取命名空间,检查 /ViewModels、/Views、/Models 目录是否存在,并搜索现有基类或接口。
- 代码生成:根据生成类型参数生成对应组件。
输出格式为 Markdown 报告,包含实体名称、生成文件表格(文件、路径、状态)以及后续步骤建议:实现 I{EntityName}Service、注册到 DI 容器、添加 View 导航、按需生成设计时数据。
适用场景
- 在 WPF 项目中快速搭建符合 MVVM 模式的新功能或实体。
- 需要统一使用 CommunityToolkit.Mvvm 源生成器风格的项目。
- 需要同时生成 Model、ViewModel、View、消息类型与服务接口的完整脚手架场景。
限制与约定
- 所有说明性输出必须使用韩语;代码标识符、技术术语、模式名称保持原文。
- 遵循项目现有命名规则。
- 生成最小化的 Code-Behind,仅包含 UI 逻辑。
- 包含适当的 XML 文档注释。
- 异步操作支持 CancellationToken。
- ViewModel 间通信使用 WeakReferenceMessenger。
错误处理:实体名称未输入时向用户请求或基于现有 Model 建议;名称无效(特殊字符、保留字)时要求重新输入;ViewModels/Views/Models 目录不存在时自动创建后继续;同名文件已存在时向用户确认是否覆盖。
关于收费、价格、平台支持范围等信息,资料中暂未提供。