当前位置: 移动技术网 > IT编程>开发语言>.net > [WPF 学习] 7 文本模板的应用

[WPF 学习] 7 文本模板的应用

2020年03月14日  | 移动技术网IT编程  | 我要评论

qq书城,北京地铁交通图,resetsw

项目使用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;}
    }
}

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网