WPF资源

资源是WPF的一个重要主题,资源可以对一些属性值进行集中管理,方便后期统一修改和维护。WPF支持传统的二进制资源,也有特定的对象资源,本文进行系统介绍。

阅读更多

WPF的UI线程

在WPF中,UI线程是比较特殊的线程,如何实现非UI线程对UI元素的修改是一个常见问题。

本文先介绍UI线程的基本知识,然后以实例方式介绍BackgroundWorker的使用及其原理。

阅读更多

WPF/MVVM系列(6)——消息传递

WPF/MVVM系列文章的前面几篇将焦点聚集在一个ViewModel中,但在实际WPF项目中每一个窗体都对应一个ViewModel,如何在多个ViewModel之间传递数据是一个重要话题。本文介绍CommunityToolkit.MVVM框架的事件机制。

阅读更多

再话WPF绑定

在实际WPF项目中,可能会遇到非常复杂的数据绑定情况,本文针对一些常见情况,归纳出简单易用的数据绑定方法。

阅读更多

WPF数据校验

在WPF中,有许多数据校验方法,ValidationRule、IDataErrorInfo和DataAnnotations是三种最常用的方式,本文对其用法做一个简单介绍。

在实际项目开发中,推荐使用IDataErrorInfo + DataAnnotations的方案!

阅读更多

自制WPF多线程加载框

在实际项目中,有些后台操作耗时较久,这时前台最好有一个动画加载框给用户提示。
该加载框的动画显示和后台操作需要同时进行,因此需要采用多线程的方式进行实现。

阅读更多

WPF/MVVM系列(6)——MVVM模式

  • 本文以一个小例子介绍了如何采用WPF原生库和CommunityToolkit.Mvvm库实现简单的MVVM模式,后者对MVVM模式的常用功能进行了进一步封装,使用更方便,代码更简洁,在大型项目中可以优先考虑使用。
  • 除了数据和命令绑定,CommunityToolkit.Mvvm库也提供了很多其他功能,比如依赖注入、控制反转等。
  • 对一个设计理念的理解或优秀框架的学习没有止境,后面随着自己理解的深入,我将不断更新本系列文章。
阅读更多

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

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

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

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

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

阅读更多

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

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

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

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

阅读更多