[WPF 学习] 7 文本模板的应用
程序员文章站
2022-11-22 09:58:30
项目使用MVVM,创建了一个基类VMBase 然后创建继承类的时候,要写一个属性,比较麻烦 折腾了一会文本模板发现不错,比如下面的代码,就能自动生成一个类,效率还是蛮高的! ......
项目使用mvvm,创建了一个基类vmbase
using system.componentmodel; using system.runtime.compilerservices; namespace ykcore.viewmodels { public class vmbase : inotifypropertychanged { public event propertychangedeventhandler propertychanged; public void raisepropertychanged([callermembername] string propertyname = "") { propertychanged?.invoke(this, new propertychangedeventargs(propertyname)); } } }
然后创建继承类的时候,要写一个属性,比较麻烦
private visibility _btnokv; public visibility btnokv { get=>_btnokv; set { _btnokv=value; raisepropertychanged(); } }
折腾了一会文本模板发现不错,比如下面的代码,就能自动生成一个类,效率还是蛮高的!
<#@ template debug="false" hostspecific="false" language="c#" #> <#@ assembly name="system.core" #> <#@ import namespace="system.linq" #> <#@ import namespace="system.text" #> <#@ import namespace="system.collections.generic" #> <#@ output extension=".cs" #> using system; using system.windows; using system.windows.media; namespace ykcore.viewmodels { public class vmmessagebox : vmbase { <# var strs=@"string tbicontext,tbmsgtext,tboffsettext visibility imageqrcodev,btncancelv,btnokv imagesource imageqrcodesource bool btnokisdefault,btncancelisdefault" .replace("\r\n","\r").split('\r'); foreach(var str in strs) { var items=str.split(' '); foreach(var cname in items[1].split(',')) { write(@$" private {items[0]} _{cname}; public {items[0]} {cname} {{ get=>_{cname}; set {{ _{cname}=value; raisepropertychanged(); }} }} "); } } #> public vmcommand commands{get;set;} } }