zoukankan      html  css  js  c++  java
  • [WPF 学习] 7 文本模板的应用

    项目使用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("
    ","
    ").Split('
    ');
    
    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;}
        }
    }
    
    
  • 相关阅读:
    小数据池以及深浅拷贝
    字典的初识,了解
    元组:认识,索引 切片
    列表的认识,嵌套,增删改查
    bool、字符串方法、for循环
    字符串格式化输出、while循环、运算符.
    Python的基础知识与历史应用
    git错误:error: failed to push some refs to 'https://...'
    golang中gin框架使用logrus
    golang中如何监控多个goroute协程是否执行完成
  • 原文地址:https://www.cnblogs.com/catzhou/p/12487772.html
Copyright © 2011-2022 走看看