WPF/MVVM系列(4)——事件

学习WPF的路由事件,我认为最重要是以下两点:

  1. 相比传统的消息驱动和事件驱动模型,路由事件的优势是什么。

  2. 基于WPF的两种树形结构,直观理解路由事件的运行规律。

关于如何自定义路由事件以及附加事件,通常不是开发者的重点,如有必要可再深入探究。

阅读更多

WPF/MVVM系列(3)——属性

.NET中有三种属性:C#语言层面的普通属性(以下简称“C#常规属性”)、WPF依赖属性、WPF附加属性。

C#常规属性的缘由:封装是面向对象编程的一大特性,其表现形式就是类。类通常包含若干字段,这些字段一般不直接对外开发,而是通过GetXXX/SetXXX这对方法来间接访问,这样就可以进行数据合法性检测。C#语言非常人性化,将GetXXX/SetXXX这对方法抽象成一个新的语言特性——属性。

WPF依赖属性和附加属性,从语言语法角度来看没有额外创新,属于.NET标准库层面的进一步封装。

阅读更多

WPF/MVVM系列(2)——绑定

数据是任何软件系统的主角,软件系统的核心功能就是对数据进行存储、处理和展示。

数据存储形式主要包括数据库和文件,该过程相对独立,技术方案也相对成熟;相反,随着UI日趋复杂,数据处理和数据展示这两部分总是难解难分,开发者经常会将两者的代码混淆在一起,一不小心就会严重伤害到软件的可维护性。

WPF的数据绑定就是为了从本质上解决这个问题:将内存数据绑定到UI,内存数据和UI任何一方的变化都能马上同步到另一方,在XAML上实现UI编程,尽可能减少后端代码介入UI逻辑,让开发重心回归到数据处理上。

阅读更多

WPF/MVVM系列(1)——前言

学习WPF之前,思考以下三个问题很有必要:

  1. 已有的Windows GUI开发技术有什么不足?
  2. WPF解决了什么问题?
  3. 学习WPF的目的是什么,最应该掌握哪些部分?
阅读更多

log4net日志库的基本使用

日志在大型软件开发过程中扮演着不可或缺的角色,开发者经常使用它对系统进行调试和监控。
log4net是.NET平台上非常流行的日志库,网上零碎教程鱼龙混杂,花费良久才搭建起可用的基本框架。
本文简单介绍它的使用步骤,后续会专门写篇文章深入剖析其配置文件。

阅读更多

Windows系统编程——创建新进程

本文概述:

  1. 简要介绍Windows程序的启动过程;
  2. 详细介绍在控制台程序、窗口程序中获取命令行、环境变量和当前目录的方法;
  3. 以Windows API和C#为例,编写创建新进程、设置并获取命令行等数据的完整代码;
  4. 介绍环境变量、命令行在VS程序调试、业务开发平台切换中的实际应用。
阅读更多

黄石两日游

生活在高楼林立、车水马龙、熙熙攘攘的都市里,心态不免焦躁,脚步不免急促。趁着春节假期,沐浴着久违的暖阳,踏着轻快的小黄车穿梭在大街小巷,看老人悠闲垂钓,看顽童欢乐嬉戏,看湖面波光粼粼,看远山层峦叠嶂……内心感到无比宁静舒适!

泥土路上枯草点缀,水泥台阶上斑痕累累,向行人诉说着四季轮回万物枯荣、光阴飞逝岁月悠长,贴近大自然总能感受到它的亲切和博大。迈着不断变得沉重的双腿向山顶进发,汗水湿润了额头也不愿减缓步伐,登临山顶,眺望远处,内心敞亮而豁达。

放缓生活的节奏,置身于朴实的大自然,感受它的无穷魅力,我们的精神将更加富有!

阅读更多

与《码农翻身》作者共鸣

前不久,无意间看到了一本书——《码农翻身》,作者刘欣,前IBM系统架构师,可谓IT工业界的翘楚。作者语言诙谐,对软件开发领域的关键知识如数家珍、娓娓道来,字里行间流露出对软件开发的满腔热忱。其中,作者谈论“好奇心”的文字打动了我。

阅读更多