《深入浅出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 AI Alibaba接入大模型时的依赖问题小结

《SpringAIAlibaba接入大模型时的依赖问题小结》文章介绍了如何在pom.xml文件中配置SpringAIAlibaba依赖,并提供了一个示例pom.xml文件,同时,建议将Maven仓... 目录(一)pom.XML文件:(二)application.yml配置文件(一)pom.xml文件:首

在Java中使用ModelMapper简化Shapefile属性转JavaBean实战过程

《在Java中使用ModelMapper简化Shapefile属性转JavaBean实战过程》本文介绍了在Java中使用ModelMapper库简化Shapefile属性转JavaBean的过程,对比... 目录前言一、原始的处理办法1、使用Set方法来转换2、使用构造方法转换二、基于ModelMapper

使用maven依赖详解

《使用maven依赖详解》本文主要介绍了Maven的基础知识,包括Maven的简介、仓库类型、常用命令、场景举例、指令总结、依赖范围、settings.xml说明等,同时,还详细讲解了Maven依赖的... 目录1. maven基础1.1 简介1.2 仓库类型1.3 常用命令1.4 场景举例1.5 指令总结

JavaScript中的isTrusted属性及其应用场景详解

《JavaScript中的isTrusted属性及其应用场景详解》在现代Web开发中,JavaScript是构建交互式应用的核心语言,随着前端技术的不断发展,开发者需要处理越来越多的复杂场景,例如事件... 目录引言一、问题背景二、isTrusted 属性的来源与作用1. isTrusted 的定义2. 为

Spring核心思想之浅谈IoC容器与依赖倒置(DI)

《Spring核心思想之浅谈IoC容器与依赖倒置(DI)》文章介绍了Spring的IoC和DI机制,以及MyBatis的动态代理,通过注解和反射,Spring能够自动管理对象的创建和依赖注入,而MyB... 目录一、控制反转 IoC二、依赖倒置 DI1. 详细概念2. Spring 中 DI 的实现原理三、

Java如何通过反射机制获取数据类对象的属性及方法

《Java如何通过反射机制获取数据类对象的属性及方法》文章介绍了如何使用Java反射机制获取类对象的所有属性及其对应的get、set方法,以及如何通过反射机制实现类对象的实例化,感兴趣的朋友跟随小编一... 目录一、通过反射机制获取类对象的所有属性以及相应的get、set方法1.遍历类对象的所有属性2.获取

最好用的WPF加载动画功能

《最好用的WPF加载动画功能》当开发应用程序时,提供良好的用户体验(UX)是至关重要的,加载动画作为一种有效的沟通工具,它不仅能告知用户系统正在工作,还能够通过视觉上的吸引力来增强整体用户体验,本文给... 目录前言需求分析高级用法综合案例总结最后前言当开发应用程序时,提供良好的用户体验(UX)是至关重要

python中poetry安装依赖

《python中poetry安装依赖》本文主要介绍了Poetry工具及其在Python项目中的安装和使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随... 目录前言1. 为什么pip install poetry 会造成依赖冲突1.1 全局环境依赖混淆:1

vue如何监听对象或者数组某个属性的变化详解

《vue如何监听对象或者数组某个属性的变化详解》这篇文章主要给大家介绍了关于vue如何监听对象或者数组某个属性的变化,在Vue.js中可以通过watch监听属性变化并动态修改其他属性的值,watch通... 目录前言用watch监听深度监听使用计算属性watch和计算属性的区别在vue 3中使用watchE

每天认识几个maven依赖(ActiveMQ+activemq-jaxb+activesoap+activespace+adarwin)

八、ActiveMQ 1、是什么? ActiveMQ 是一个开源的消息中间件(Message Broker),由 Apache 软件基金会开发和维护。它实现了 Java 消息服务(Java Message Service, JMS)规范,并支持多种消息传递协议,包括 AMQP、MQTT 和 OpenWire 等。 2、有什么用? 可靠性:ActiveMQ 提供了消息持久性和事务支持,确保消