SuperAPI AI 工具集

wpf-mvvm-scaffold

编程与开发

查看项目

更新于 10-15 09:47

技能介绍

用途

wpf-mvvm-scaffold 用于为 WPF 应用程序生成 MVVM 架构脚手架。它创建一套生产就绪的 MVVM 基础结构,包括 ViewModelBase、RelayCommand、INotifyPropertyChanged 实现以及依赖注入配置,帮助开发者跳过重复的样板代码搭建工作。

主要能力

  • 生成带 INotifyPropertyChanged 的 ViewModelBase
  • 创建 RelayCommand / AsyncRelayCommand 实现
  • 使用 Microsoft.Extensions.DependencyInjection 配置依赖注入
  • 生成导航服务模式
  • 创建 messenger / 事件聚合器
  • 支持设计时数据
  • 为 ViewModel 生成单元测试脚手架
  • 配置 MVVM toolkit 集成

输入参数

技能接受以下输入:

  • projectPath(必填):WPF 项目路径
  • projectName(必填):项目名称
  • mvvmFramework:可选 custom、mvvm-toolkit、prism、caliburn,默认 mvvm-toolkit
  • features:可选 navigation、messenger、validation、dialogs、design-time,默认 navigation 与 validation
  • diFramework:可选 microsoft-di、autofac、ninject,默认 microsoft-di
  • generateViewModels:初始要生成的 ViewModel 列表

输出内容

输出包含 success 状态、生成的文件列表(含路径与类型:base、viewmodel、service、command)以及所需的 NuGet 包列表。

生成的项目结构

生成的项目包含 App.xaml、App.xaml.cs、ViewModels(Base 目录下的 ViewModelBase.cs 与 RelayCommand.cs,以及 MainViewModel、ShellViewModel、SettingsViewModel)、Views、Services(INavigationService、NavigationService、IDialogService、DialogService)、Models 和 Infrastructure(Bootstrapper、ServiceLocator、Messenger)。

生成的代码示例

ViewModelBase 实现 INotifyPropertyChanged,提供 OnPropertyChanged 与 SetProperty 方法,并包含 IsInDesignMode 设计时支持。RelayCommand 与 AsyncRelayCommand 实现 ICommand,AsyncRelayCommand 通过 _isExecuting 标志防止重入。MainViewModel 使用 CommunityToolkit.Mvvm 的 ObservableProperty 与 RelayCommand 特性,通过构造函数注入 INavigationService 与 IDataService,并支持设计时数据加载。App.xaml.cs 使用 ServiceCollection 注册服务、ViewModel 与 View,并在 OnStartup 中解析 ShellView 与 ShellViewModel。NavigationService 实现 INavigationService,维护导航栈,支持 NavigateTo、GoBack 与 INavigationAware 回调。

依赖的 NuGet 包

  • CommunityToolkit.Mvvm 8.2.2
  • Microsoft.Extensions.DependencyInjection 8.0.0

最佳实践

  • 保持 ViewModel 与 UI 无关,不引用 WPF 类型
  • 对长时间运行的操作使用异步命令
  • 实现 INotifyDataErrorInfo 进行验证
  • 支持 Blend / VS 设计器的设计时数据
  • 每个 View 对应一个 ViewModel
  • 对 ViewModel 进行单元测试,模拟服务

适用场景

适用于需要快速搭建 WPF MVVM 项目基础架构的 .NET 桌面应用开发场景,尤其是希望统一采用依赖注入、导航服务与命令模式的团队项目。

限制

资料未提供该技能的具体收费、价格、平台限制或运行环境要求。