WPF 进阶 - Fody PropertyChanged

相信每一个WPF开发工程师都会遇到这样一个问题,将业务转换成业务模型(Model)以后,就需要用相应的视图(VIEW)和视图模型(ViewModel)展示和交互,那么MVVM模式下就必然要做一个头疼的事情,那就是封装响应变化通知的CLR属性,顶级接口为:INotifyPropertyChanged

阅读更多
WPF MarkupExtension 实践

WPF MarkupExtension 实践

我们首先来回顾一下上一篇中 MarkupExtension 的一些基础的概念,首先当然是 XAML 了,XAML 全称是 Extensible Application Markup Language (可扩展应用程序标记语言),是专门用于 WPF 技术中的 UI 设计语言,通过使用 XAML 语言,我们能够快速设计软件界面,同时能够通过绑定这种机制能够很好地实现界面和实现逻辑之间的解耦,这个就是 MVVM 模式的核心了。

阅读更多

WPF MarkupExtension 原理

存在一些不是特定于XAML的WPF实现的标记扩展,而是XAML作为语言的内在函数或特征的实现。这些标记扩展在System.Xaml程序集中实现,作为一般.NET Framework XAML服务的一部分,并且位于XAML语言XAML命名空间内。在Xaml中为某个对象以Attribute的方式设置对象的属性时,attribute的值默认只能是字符串。

阅读更多

依赖属性解析

Windows Presentation Foundation (WPF) 提供了一组服务,这些服务可用于扩展公共语言运行时 (CLR) 属性的功能,这些服务通常统称为 WPF 属性系统。由 WPF 属性系统支持的属性称为依赖项属性,虽然不清楚依赖属性,但是属性我们是很清楚的,封装类的字段,表示类的状态,编译后被转化为get_set_方法,可以被类或结构等使用,常见的一个属性如下:

阅读更多

DependencyProperty 属性之事件

依赖属性提供一种全局内部属性存储来在运行时支持应用内的所有依赖属性,从而扩展基本的 Windows 运行时属性功能。这种方法可以替代为具有专用字段的属性(在属性定义类中为专用)提供支持的标准模式。你可以将此内部属性存储视为任何特定对象的一组属性标识符和值(只要该对象是 DependencyObject 即可)。属性存储中的每个属性均通过 DependencyProperty 实例(而不是通过名称)进行标识。但是,大多数情况下,属性系统会隐藏该实现详细信息:你可以使用简单名称频繁访问依赖属性

阅读更多

WPF 代码生成绑定 DataTemplate

前几天在做 .NET WPF项目的时候,有这样一个需求,在 自定义控件样式文件 里面需要为一个 ListBox 绑定 DataTemplate 模板,而且在模板里面有一个Viewbox ,更变态的是,需要绑定一个鼠标左键单击事件,我们都知道自定义控件的 主题样式文件(视图XAML) 是无法访问到控件类的,这一下子就把我给难住了,后来一想,看来只能在控件类里面操作了。

阅读更多