《深入浅出WPF》读书笔记.7依赖属性和附加属性

2024-08-26 08:20

本文主要是介绍《深入浅出WPF》读书笔记.7依赖属性和附加属性,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《深入浅出WPF》读书笔记.7依赖属性和附加属性

背景

总结一下wpf依赖属性和附加属性的底层逻辑,方便更好的理解使用。

属性

CLR属性由来

static属性和非static属性的区别

static属性:对类有意义,内存只有一个实例;

非static属性:对类实例有意义,每个类实例类都有一个实例;

CLR属性的演变

>字段

>>字段+get set方法

>>>属性

CLR属性不会增加内存损耗

依赖属性

依赖属性在使用数据时才会分配空间

DependencyObject的参数属性
        public string NameProperty{get { return (string)GetValue(NamePropertyProperty); }set { SetValue(NamePropertyProperty, value); }}// Using a DependencyProperty as the backing store for NameProperty.  This enables animation, styling, binding, etc...public static readonly DependencyProperty NamePropertyProperty =DependencyProperty.Register("NameProperty", typeof(string), typeof(Student), new PropertyMetadata(0));

👆包装器>            DependencyProperty.Register("NameProperty", typeof(string), typeof(Student), new PropertyMetadata(0));

依赖属性的存取机制

DependencyObject中存在一个HashTable,用于注册DependencyObject实例,Register的源码中

的FromNameKey用于注册hashtable,key由NameProperty属性和typeof(owner)属性异或获得,

此key用于获取dependency属性。而denpency属性的实例则由GlobalIndex在依赖属性中获取

getvalue源码

依赖属性读取优先级

setvalue

附加属性

附加属性是一种特殊的依赖属性,globalindex的取值数组存储在附加对象中。


这一章是基础知识,面试可能会问,其余问题不大。原理性的东西,大家有个概念就可以。

这篇关于《深入浅出WPF》读书笔记.7依赖属性和附加属性的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1108046

相关文章

深入浅出Spring中的@Autowired自动注入的工作原理及实践应用

《深入浅出Spring中的@Autowired自动注入的工作原理及实践应用》在Spring框架的学习旅程中,@Autowired无疑是一个高频出现却又让初学者头疼的注解,它看似简单,却蕴含着Sprin... 目录深入浅出Spring中的@Autowired:自动注入的奥秘什么是依赖注入?@Autowired

Spring 依赖注入与循环依赖总结

《Spring依赖注入与循环依赖总结》这篇文章给大家介绍Spring依赖注入与循环依赖总结篇,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. Spring 三级缓存解决循环依赖1. 创建UserService原始对象2. 将原始对象包装成工

Spring-DI依赖注入全过程

《Spring-DI依赖注入全过程》SpringDI是核心特性,通过容器管理依赖注入,降低耦合度,实现方式包括组件扫描、构造器/设值/字段注入、自动装配及作用域配置,支持灵活的依赖管理与生命周期控制,... 目录1. 什么是Spring DI?2.Spring如何做的DI3.总结1. 什么是Spring D

Springboot项目构建时各种依赖详细介绍与依赖关系说明详解

《Springboot项目构建时各种依赖详细介绍与依赖关系说明详解》SpringBoot通过spring-boot-dependencies统一依赖版本管理,spring-boot-starter-w... 目录一、spring-boot-dependencies1.简介2. 内容概览3.核心内容结构4.

Python如何调用另一个类的方法和属性

《Python如何调用另一个类的方法和属性》在Python面向对象编程中,类与类之间的交互是非常常见的场景,本文将详细介绍在Python中一个类如何调用另一个类的方法和属性,大家可以根据需要进行选择... 目录一、前言二、基本调用方式通过实例化调用通过类继承调用三、高级调用方式通过组合方式调用通过类方法/静

深入浅出SpringBoot WebSocket构建实时应用全面指南

《深入浅出SpringBootWebSocket构建实时应用全面指南》WebSocket是一种在单个TCP连接上进行全双工通信的协议,这篇文章主要为大家详细介绍了SpringBoot如何集成WebS... 目录前言为什么需要 WebSocketWebSocket 是什么Spring Boot 如何简化 We

Java Spring的依赖注入理解及@Autowired用法示例详解

《JavaSpring的依赖注入理解及@Autowired用法示例详解》文章介绍了Spring依赖注入(DI)的概念、三种实现方式(构造器、Setter、字段注入),区分了@Autowired(注入... 目录一、什么是依赖注入(DI)?1. 定义2. 举个例子二、依赖注入的几种方式1. 构造器注入(Con

spring中的@MapperScan注解属性解析

《spring中的@MapperScan注解属性解析》@MapperScan是Spring集成MyBatis时自动扫描Mapper接口的注解,简化配置并支持多数据源,通过属性控制扫描路径和过滤条件,利... 目录一、核心功能与作用二、注解属性解析三、底层实现原理四、使用场景与最佳实践五、注意事项与常见问题六

Linux线程之线程的创建、属性、回收、退出、取消方式

《Linux线程之线程的创建、属性、回收、退出、取消方式》文章总结了线程管理核心知识:线程号唯一、创建方式、属性设置(如分离状态与栈大小)、回收机制(join/detach)、退出方法(返回/pthr... 目录1. 线程号2. 线程的创建3. 线程属性4. 线程的回收5. 线程的退出6. 线程的取消7.

python删除xml中的w:ascii属性的步骤

《python删除xml中的w:ascii属性的步骤》使用xml.etree.ElementTree删除WordXML中w:ascii属性,需注册命名空间并定位rFonts元素,通过del操作删除属... 可以使用python的XML.etree.ElementTree模块通过以下步骤删除XML中的w:as