V.CodeGenerator WPF代码生成器
前言:
受 WTM 的影响,想自己尝试写一个自动生成WPF项目的代码生成器
本文主要用于介绍基础库的使用,关于代码生成器的使用后续另开章节。
这个基类倒是断断续续写了一年多。。实际的代码生成工具还是一年前的模样,工作太忙,只能摸鱼完善基类
Vampirewal.Core内容
EFCore版本
Nuget:Install-Package Vampirewal.Core -Version 1.0.1.7
SqlSugar版本
Nuget:Install-Package Vampirewal.Core -Version 2.2.1-beta
CommunityToolkit.Mvvm版本
Nuget:Install-Package Vampirewal.Core -Version 3.1.1-beta
1、AppConfig(程序的配置文件)
2、IoC容器
3、基础服务
4、Model基类
5、SimpleMVVM
6、各种帮助类
7、WPF自定义窗体
8、WPF自定义控件
9、自动更新扩展程序(开发中)
10、AOP功能
版本更新记录
2022-12-15
大版本更新,2.0版本将继续维护自己造的一些轮子,3.0版本使用了CommunityToolkit.Mvvm来代替之前的一些内容,同时调整了一部分代码的结构,在运行速度上有较大提升。
3.0移除了2.0中的IoC容器、自己定义的RelayCommand命令、NotifyBase、ViewModelLocator等,切换至CommunityToolkit.Mvvm中的一些方法进行替代
3.0中的ViewModelLocator,换成了VampirewalBootStartUp,也是需要在ViewModel中继承并实现,在里面进行一些服务的注册。
2022-12-13
修改:较多内置服务更换名称
修复:一些细节
新增:AOP功能,后续添加专题内解释
2022-11-26
新增:TreeListView控件,就是树形的DataGrid控件,详细请看自定义控件章节
更新:VampirewalIoc组件新增泛型类型注册,现阶段主要放在ViewModelLocator中注册:VampirewalIoC.GetInstance().RegisterService(typeof(SqlSugarRepository<>), RegisterType.Factory);即可通过构造函数SqlSugarRepository _repUnited,来进行注入,或通过属性的方式进行注入。
优化:调整了较多的代码细节
2022-11-07
新增:控件事件绑定命令的方式,来源作者:若汝棋茗,原理地址,缝合到我这里之后,改名为:TouchEventCommands,使用方式与原内容一致
2022-11-1
新增:DetailItemChangeBaseModel基类,用于明细项涉及到变更的情况
修改:VampirewalDbBase数据库连接操作基类中client从SqlSugarClient换成了SqlSugarScope,更好的适应多线程
新增:IAppConfig中,添加连接域配置
新增:TuoMinHelper文本脱敏助手
新增:Utils中添加2个模型转换ModelConverter
2022-6-11:年后因公司的事情太忙,基础库的代码断断续续的在更新,但是一直没时间写更新文档
修改:拆分了1个 组件出去到nuget上(详细看第3条基础服务),让基础库减少了1个引用
修改:配置文件AppConfig中,新增1个集合用于保存模块化开发的dll路径,用于VampirewalIoC容器(详细查看第1条和第2条)
移除:原CustomIoC是借鉴了MvvmLight中的IoC容器,现移除
新增:VampirewalIoC是作者自己学习后写的,功能较简单,但暂时够用。(支持属性注入)
修改:model基类中,BillId和DtlId上的导出Excel特性移除,如需导出,需在继承的类中new一下BillId或DtlId,然后添加对应的特性
新增:组件中新增1个小玩意,可以检查方法的执行时间
新增:组件中新增1个模型错误验证服务VampirewalValidationService,model中的属性,需有继承自ValidationAttribute的特性
2022-3-10
- 修改:NotifyBase中的一个Set方法改成ActionSet,区别一下。
- 移除:MainWindowBase窗体基类中,CloseButton_Click方法重复了。
- 新增:WindowBase中新增1个窗体关闭时的依赖属性,用于将窗体关闭的方法可Binding,更贴合MVVM
2022-3-9
- NotifyBase中,新增1个方法:带委托的属性变更通知
2022-2-18
- ORM更换:从EFCore更换为SqlSugar,低于2.X版本的为EFCore版本
- 新增:Model基类:TopModel、BillBaseModel、DetailBaseModel和TreeDetailBaseModel
- 新增:ViewModel基类:BillVM、BillListBaseVM、DetailVM
2021-12-22
- 新增:自定义控件(高度自定义的搜索栏);详细请看自定义控件文章
2021-12-2
- 调整:ViewModelLocatorBase中将注册服务和ViewModel的方法拆开,有执行先后顺序。
- 新增:针对DataGrid新增1个Behavior方法,用于给DataGrid控件添加Group分组,具体使用方法,详细请看第8条(自定义控件)内介绍
2021-11-16
- 新增:继承VampirewalApplication的App类,新增1个全局异常捕获,需重写GlobalExceptions;
2021-11-15
- 新增:自动更新扩展功能(Github地址)还在开发中,现在有问题在于压缩和解压缩这块,后续再写一个打包工具
- 新增:ViewModelLocatorBaseEmpty;一个空的ViewModelLocatror,无任何额外组件注入;
- 新增:AppConfig中新增UpdateSetting,用于自动更新功能使用,如不需要使用自动更新,那么这个地方的值,框架无任何地方使用;
- 修改:AppConfig配置文件的路径和文件名现可自定义,在执行config.LoadAppConfig()方法前,将ConfigPath和ConfigName进行赋值即可,但是内容依然需要是原AppConfig的内容;
- 新增:生成随机编号帮助类(命名空间:Vampirewal.Core.Tools),调用RandomHelper
2021-11-8
- 新增:GetRegisterTokens()方法,可以获取已在Messenger中注册的Token
- 修改:在VampirewalApplication的GetView()方法中,新增传入Assembly判断是否为null
- 新增:工具方法=>Utils.AsciiToString() ASCII码转string;Utils.CreateShortcut() 创建程序快捷方式
- 分享:近期楼主使用Vampirewal.Core实战快速完成了一个小项目,后面有时间进行分享
2021-11-5
- 新增:LayoutUcViewBase页面布局----详细请看第七条
- 新增:AddOrEditUcViewBase页面布局----详细请看第七条
- 修改:ShowDialogWindow原内容在窗体最大化后,会出现上下留白的情况。现已修复
- 新增:IAppConfig新增重置Reset()重置配置文件方法。慎用
2021-11-4
- 新增:自定义窗体MainWindowBase,详细请查看上文的------自定义窗体内容
2021-11-1
- 修改:完善基类中属性变更通知,set中添加DoNotify();
- 修改:自定义窗体的拉伸功能之前被覆盖了,现在已修复
2021-10-31
- 新增:CustomDbContextBase自定义建库内容的空白DB上下文,区别之前的DBContextBase,减少了很多会随系统启动就建立的表
- 修改:ViewModelBase中,新增1个构造函数,参数为IAppConfig,子类可继承
2021-10-20
- 新增:OpenDialogWindow窗体的Setting中,新增部分字段
- 修改:OpenDialogWindow窗体现在可返回任意值(该修改基本上差不多了,具体该窗体的信息,可查看上文<基础服务>内关于这块的介绍
- 修改:OpenDialogWindow窗体为ScrollView内容,避免内容过长导致底部不显示,现存在拖动条
- 新增:自定义控件TitleContent(带标题的内容控件)
2021-10-19
- 新增:OpenDialogWindow弹窗窗体,使用方式请看目录中 基础服务
- 新增:ViewModelLocatorBase基类中,添加了IDialogMessage服务的注册,后续只要是继承自ViewModelBase的VM在构造函数中即可注入该服务使用
- 修改:自定义窗体和页面的引用方式
- 移除:MEF依赖注入方式
2021-10-15
- 新增:EnumHelper中Enum转List方法
2021-10-14
- 新增: TitleContent自定义控件
- 新增: TreeView的样式
- 新增: PopupWindow(气泡提示)控件
- 新增:AddOrEditUcViewBase页面基类
- 修改:ViewModelBase移除一些不需要的Command
- 修改:BaseCURDVM新增1条保存命令,用于页面按钮绑定
- 修改:VampirewalConfig新增2条配置项