本文告诉大家如何扔掉 cs 文件,在 xaml 写 C# 代码,将 xaml 和 C# 代码写在一个文件 在 WPF 的 XAMl 有一个小伙伴也许看到但是忽略的特性就是 x:Code 特性,这个特性在...UWP 版本被干掉了,因为太好用了 其实小伙伴忽略这个特性也是对的,因为从设计上这不是一个好的方案,将 XAML 和业务逻辑 C# 代码放在一个文件里面 但是可以用来做和界面十分相关的逻辑,此时放在...XAML 文件的 C# 代码会提高代码的相关性 请看下面代码 <Button Name="Button" HorizontalAlignment="Center"...欢迎访问我博客 https://blog.lindexi.com 里面有大量 UWP WPF 博客"; } ]]> 此时不需要在 xaml.cs
从C#到TypeScript - Reflect 在C#里如果想只通过名字来生成类实例、获取属性或执行方法可以使用反射,反射是基于元数据,现在很多流行语言都支持元数据,以此来提供更多便利的功能。...ES6和TypeScript也有Reflect,不过因为JavaScript本身是解释型语言,很多操作如根据名字字符串获取属性,根据字符串执行函数这些原本就有支持,Reflect只是把这些操作归结到一起...Set 定义如下: Reflect.get(target, name, receiver); Reflect.set(target, name, value, receiver); 看上去也很好理解,和C#...Reflect.preventExtensions(target) 让一个对象变为不可扩展 Reflect基本上就是把之前Object的方法和一些命令如delete in之类聚到一起,相信ES6之后用
从C#到TypeScript - 接口 为了更好的抽象出行为和属性,TypeScript在ES6的基础上增加了接口interface。...C#也有interface,不过TypeScript的接口还不大一样,C#里的接口一般是为类服务,让类实现接口中定义的方法或属性。...TypeScript在C#基础上更进一步,由于JavaScript是门非常灵活的语言,TypeScript作为JavaScript的超集需要保持灵活性,所以接口在TypeScript里可以脱离具体的类,...类的接口 这和C#的差不多,描述了公共的成员;不过实现接口语法有点类似于Java,用的是implements。...从实现上看有点类似于C#的delegate。
从C#到TypeScript - function 虽然TypeScript里有了类,但JavaScript的function也还在,这也是和C#的不同所在。...C#里函数不能脱离类工作,但TypeScript的function和JavaScript一样,可以单独工作。...同C#里的函数参数可以有默认值一样,TypeScript也支持,并且还支持可空参数。...TypeScript同样可以通过剩余参数来支持,形式上类似于C#的param。 剩余参数的格式是...restParam: string[]。...泛型函数 同C#一样支持泛型函数,写法也差不多。
从C#到TypeScript - Promise 背景 相信之前用过JavaScript的朋友都碰到过异步回调地狱(callback hell),N多个回调的嵌套不仅让代码读起来十分困难,维护起来也很不方便...其实C#在Task出现之前也是有类似场景的,Async Programming Mode时代,用Action和Func做回调也很流行,不过也是意识到太多的回调嵌套代码可读性差且维护不易,微软引入了Task...Promise不能在任务进行中取消,只能等结果返回,这点上不如C#的Task,Task可以通过CancelTaskToken来取消任务。...success'); throw new Error('error'); }).catch(function(error) { console.info(error); // 不会执行到这里...console.info('done')); } catch (e){ console.info(e); // 由于最后面的done,所以会把finally里的异常抛出来,如果没有done则不会执行到这里
从C#到TypeScript - Proxy 我们知道在C#中要实现代理功能需要自己来实现代理类,并且每个类需要不同的代理类,使用起来不方便,虽然借助一些AOP框架可以一定程度实现拦截,但毕竟框架级别的还是太重了
从C#到TypeScript - 类型 TypeScript和C#一样是微软搞出来的,而且都是大牛Anders Hejlsberg领导开发的,它们之间有很多共同点,现在尝试以C#程序员的角度来理解下TypeScript...现在来看下TypeScript基础类型: 数值 C#的数字类型有好几种:int, long, float, double, byte等,而TypeScript和JavaScript一样,所有的数字都是浮点数...,都是用number表示,这样也省了很了事,少了C#里类似long转int overflow问题。...10进制 let num = 0xa4; // 16进制 let num = 0b10010; // 2进制 let num = 0o24; // 8进制 布尔 boolean,和C#...功能上和C#差不多: 目的都是为数值提供一个友好的名字,增加代码可读性和可重构性 默认情况下从0开始编号 也可以手动赋值 可以实现类似C# Flag特性 但也有一些细节不一样: C#的枚举值toString
从C#到TypeScript - 类 在ES6之前Javascript的类都是用function定义的,ES6把类关键字正式加进来,虽说其实也还是function,不过代码可读性上好了不少。...TypeScript同样支持class,并且和C#也非常相似,下面来看看: 类 同C#一样,由构造函数,属性,方法组成,属性和方法有三个级别的访问权限:private, protected, public...,比C#少个internal。...不过不同的是C#类的成员默认是private,而TypeScript默认是public。 在类里面所有成员都必须用this来访问。...u.checkLogin()); // true u.name = 'test'; console.info(u.checkLogin()); // false 参数属性 上面的User类有两个成员,而且都是从构造函数赋值的
从C#到TypeScript - Generator 上篇讲了Promise,Promise的执行需要不停的调用then,虽然比callback要好些,但也显得累赘。...console.info(p.next()); console.info(p.next()); 先看下和普通函数的区别,function后面多了一个*,变成了function*,函数体用到了yield,这个大家比较熟悉,C#
从C#到TypeScript - 变量 TypeScript的变量声明和ES6差不多,相比之前主要是多了let和const 为什么不用var 不管是TypeScript还是ES6都会兼容以前的javascript...虽然C#里也有var,但和JavaScript的可不一样,var在javascript里会有一些奇怪的表现,比如会置前,而且作用域是整个函数,可以不写var来声明变量,然后变量变成全局。...这些都可能会带了一些不容易注意到的问题。...const C#也有const,意义上差不多,都是常量,不想变量被改变。
C# vs TypeScript - 高级类型 上一篇讲了基础类型,基本上用基础类型足够开发了,不过如果要更高效的开发,还是要看下高级类型,这篇和C#共同点并不多,只是延用这个主题。...联合类型 可以从字面上进行理解:其实就是多个类型联合在一起,用|符号隔开。 如: string | number, 表示希望这个类型既可以是string,又可以是number。...TypeScript和C#一样,只不是圆括号改成尖括号。...这点上比C#来得好,一般C#做法可能是用as操作符转过来,然后判断是否为空,如果类型多操作起来也很复杂。 类型别名 类型别名即可以为现有类型取一个新名字。...= System.Generic.List做个别名,不过还是不一样,C#的是可以实例化的。
从C#到TypeScript - async await 上两篇分别说了Promise和Generator,基础已经打好,现在可以开始讲async await了。...async await是ES7的议案,TypeScript在1.7版本开始支持async await编译到ES6,并在2.1版本支持编译到ES5和ES3,算是全面支持了。...async await 用法 和C#里的十分相似,看个例子: function delay(): Promise{ return new Promise((resolve...async function run(){ await Promise.reject('error'); // 这里出异常 console.info('continue'); // 不会执行到这里...this, void 0, void 0, function* () { yield delay(); console.info('run'); }); } 可以注意到其实还是用
从C#到TypeScript - 装饰器 在C#里面如果想要不直接修改类或方法,但给类或方法添加一些额外的信息或功能,可以想到用Attribute,这是一个十分方便的功能装饰器。...function Testable(target: Function) { // 类、方法、属性、方法参数的参数各不相同 //这里可以记录一些信息到target,或者针对target做一些处理,...即属性描述符,有 configurable 是否可以配置,如动态添加删除函数属性之类 writable 是否可写,可以用来设置只读属性 enumerable 是否可枚举,即是否能在for...in中能枚举到
StreamResourceInfo sri = Application.GetResourceStream(new Uri("HowTo;component/Page.xaml", UriKind.Relative...StreamReader(sri.Stream); txtReadxml.Text = sr.ReadToEnd(); {1};component/{2} 1为程序集的名字 2为想读取的页面 page.xaml...xmlns="http://schemas.microsoft.com/client/2007" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml...这种方法不仅可以读取xaml. 只要是以嵌入资源的形式放在项目中都可以获取. 作者:nasa 联系:nasa_wz@hotmail.com QQ:12446006
JZGKCHINA 工控技术分享平台 尊重原创 勿抄袭 勿私放其他平台 WPF也是我今年刚开始深入去了解,看了不少的学习视频和书籍,受剑神Python入门到放弃的启发,想把这段时间学习内容做个总结...WPF入门到放弃(一) | 安装与创建 说明: 本文主要介绍WPF(Windows Presentation Foundation),是微软推出的一项基于windows操作系统、.NET平台的C/S客户端构建技术...xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"这个名称空间与解析XAML语言相关。...,可以把一个类在多处定义,这样XAML解析生成的类与C#文件中定义的部分就合二为一了,实现UI与逻辑分离。...下面看一下如何将C#中的类如何在xaml中使用。
今天将给大家带来实际项目中经常运用的技术—C# 如何使用创建Windows服务进行应用程序开发。...如果你觉得阿笨的《C# Windows服务开发从入门到精通》分享课程只是仅仅带领大家学习"C#如何一步一步的创建Windows服务应用程序的话,那么你就大错特错了。...二、涉及覆盖的知识点 2.1、 C# Windows服务应用程序开发零基础上手入门实战演练。 2.2、通过第三方组件 (Topshelf)创建C# Windows服务应用程序。...四、源码在线解读和演示 4.1、 C# Windows服务应用程序开发零基础上手入门实战演练。 4.1.1、C#编写的Windows服务基本应用流程如下: 1)、如何编写windows服务程序。...4.2、通过第三方组件 (Topshelf)创建C# Windows服务应用程序。
目录 说明 安装 怎么使用 多参数 全局参数、本地参数 全局参数 本地参数 定义验证成功、失败行为 计算折扣 使用自定义函数 静态函数 实例函数 自定义执行器 说明 RulesEngine 是 C# 写的一个规则引擎类库...definition (基于 Json 的规则定义) Multiple input support (多输入支持) Dynamic object input support (动态对象输入支持) C#...当然定义变量存储到数据库也行,但是如果后面又新增了几个条件,那么我们就需要修改代码了,大佬说,这样不好,我们要 RulesEngine 。 好的,那我们来研究一下这个东西。...... ...}]" // JSON var workflows = JsonConvert.DeserializeObject>(rulesStr); C#...CheckAuthenticated", "Expression": "Authenticated == true" RuleName:规则名称; Expression: 真实的代码,必须是符合 C#
委托与事件在C#1.0的时候就有了,随着C#版本的不断更新,有些写法和功能也在不断改变。本文温故一下这些改变,以及在NET Core中关于事件的一点改变。 一、C#1.0 从委托开始 1....SendDelegate前面添加了一个event标识,虽然它被设置为public,但如下代码却会给出错误提示: 事件“HRWithEvent.sendDelegate”只能出现在 += 或 -= 的左边(从类型...控制绑定事件的执行 当多个委托被绑定到事件之后,如果想精确控制各个委托的运行怎么办,比如返回值(虽然经常为void)、异常处理等。...CancelRequested { get; set; } public SendMsgArgs(string msg) { this.Msg = msg; } } 三、随着C#...C#3.0 Lambda 表达式 从 C# 3 开始,lambda 表达式提供了一种更简洁和富有表现力的方式来创建匿名函数。
emgucv实现的: ⑥第六个页面是FTP上传、下载、删除的实例,很古老的文件传输的协议,界面也就三个按钮: ⑦第七个页面是做了一个备忘录:包括了查询,筛选、删除、语音播报等功能,数据这块按理应该从数据库查询
一、课程介绍 如果您从工作中之听过但未有接触过消息对队列(MQ),如果你接触过一点关于MQ的知识,如果没有这么的多如果的话.........,那么阿笨将通过本次《C#消息队列零基础从入门到实战演练》分享课让您对消息队列有一个实质性的了解和认识,达到实际的灵活贯通和运用。...本次分享课您将学习到以下知识点: 1、微软MSMQ的基本使用技能以及MSMQ在WCF技术中的运用。 2、企业级RabbitMQ消息队列的两种消费模式(生产消费和发布订阅)的介绍和使用。
领取专属 10元无门槛券
手把手带您无忧上云