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;}
        }
    }
    
    
  • 相关阅读:
    计算机网络--->6. 传输层(1)
    问题与解决方案
    现在的状态
    再议学习-一点新的感想
    再次剖析一下自己要做的事
    Not in a good mood.
    ASP.NET知识总结(7.状体保持)
    ASP.NET知识总结(6.一般处理程序动态处理图片(验证码、水印、缩略图))
    ASP.NET知识总结(5.文件上传 文件下载)
    ASP.NET知识总结(4.请求管道中的19个事件)
  • 原文地址:https://www.cnblogs.com/catzhou/p/12487772.html
Copyright © 2011-2022 走看看