wpf 依赖属性的含义理解

依赖属性允许没有自己的字段,可以通过Binding绑定到其它对象的属性或者说数据源上,从而获得值。

缘由
由于控件有很多的属性,有属性就有字段的内存开销,但实际上对于一个控件,我们大多数只会使用其部分常用属性,比如Button我们最常使用Content,Height等属性,那些不经常使用的属性相当于白白占用着内存。当我们写一个复杂的XAML页面,涉及到很多控件的使用时,这种浪费内存的现象就很严重。

示例

public class Student: DependencyObject
{public string Name {get => (string)GetValue(NameProperty ); set => SetValue(NameProperty , value); }public static readonly DependencyProperty NameProperty =DependencyProperty.Register("Name", typeof(string), typeof(Student));
}

Register参数

1)属性名

2)属性使用的类型

3)拥有该属性的所属类型

4)PropertyMetadata对象【可选】

5)验证属性的回调函数ValidateValueCallback【可选】

PropertyMetadata

public PropertyMetadata(object defaultValue, PropertyChangedCallback propertyChangedCallback, CoerceValueCallback coerceValueCallback)
{
}

PropertyChangedCallback 属性改变触发

propertyMetadata.PropertyChangedCallback = ((s, e) =>
{Debug.WriteLine(String.Format("PropertyChanged - 属性:{0} 新值:{1} 旧值:{2}", e.Property.Name, e.NewValue, e.OldValue));
});

CoerceValueCallback 强制改变值

propertyMetadata.CoerceValueCallback = (s, e) =>
{Debug.WriteLine(String.Format("CoerceValue - {0}", e));return e;
};

ValidateValueCallback 值验证

propertyMetadata.ValidateValueCallback = (o) => {Brush brush = o as Brush;if (brush== Brushes.Yellow||brush== Brushes.Blue){return true;}else{return false;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/20104.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ConvNeXt(CVPR 2022)论文解读

paper:A ConvNet for the 2020s official implementation:https://github.com/facebookresearch/ConvNeXt third-party implementation:https://github.com/huggingface/pytorch-image-models/blob/main/timm/models/convnext.py 背景 在…

代码随想录-算法训练营day55【动态规划16:两个字符串的删除操作、编辑距离、编辑距离总结篇】

代码随想录-035期-算法训练营【博客笔记汇总表】-CSDN博客 第九章 动态规划part16● 583. 两个字符串的删除操作 ● 72. 编辑距离 ● 编辑距离总结篇 详细布置 583. 两个字符串的删除操作 本题和动态规划:115.不同的子序列 相比,其实就是两个字符串都…

流量回放平台与传统测试工具的对比分析

文章目录 一、流量回放平台的优势与挑战二、传统测试工具的优势与挑战三、实际案例演示四、解决方案五、答疑解惑5.1、传统工具不是也可以做到流量会放平台的无侵入性测试和性能瓶颈分析吗?5.2、开发流量回放平台的成本和使用传统测试工具的成本哪个更大&#xff1f…

基于SSM框架的垃圾分类系统的设计与实现(含源码+sql+开题报告+论文+论文答辩模板)

图1 前台首页截图 首页展示:首页展示法律法规、公示公告、用户交流论坛、分类指南、垃圾站点、以及个人中心; 法律法规:展示我国《城市生活垃圾分类及其评价标准》以及《生活垃圾分类标志》等最新法律法规; 公示公告&#xff1…

另一棵树的子树(oj题)

一、题目链接 https://leetcode.cn/problems/subtree-of-another-tree/submissions/536304222 二、题目思路 1.首先遍历大树,判断大树的根结点的值是否等于小树的根结点的值,如果不相等,就找大树的左孩子或者右孩子,以左孩子为根…

【线性表 - 数组和矩阵】

数组是一种连续存储线性结构,元素类型相同,大小相等,数组是多维的,通过使用整型索引值来访问他们的元素,数组尺寸不能改变。 知识点数组与矩阵相关题目 # 知识点 数组的优点: 存取速度快 数组的缺点: 事先必须知道…

php 实现:给图片加文字水印,图片水印,压缩图片

演示环境: 1、windows10 2、phpstudy 3、php7.4 一、案例演示: 二、素材准备 1、准备一张原始图片 2、准备一张水印图片(透明底图的最好) 3、字体库(windows系统自带的字体库,路径在:C:\Window…

Navicat连接Oracle

目标: 1.Navicat连接Oracle数据库,报错 无监听程序。 一、下载安装Navicat15 https://zhuanlan.zhihu.com/p/675991635 下载安装资源 链接:百度网盘 请输入提取码 提取码:1u1q 二、测试SQL PLUS连接数据库 在全部程序--》Ora…

Python | Leetcode Python题解之第123题买卖股票的最佳时机III

题目: 题解: class Solution:def maxProfit(self, prices: List[int]) -> int:n len(prices)buy1 buy2 -prices[0]sell1 sell2 0for i in range(1, n):buy1 max(buy1, -prices[i])sell1 max(sell1, buy1 prices[i])buy2 max(buy2, sell1 - …

Hadoop+Spark大数据技术 第七次作业

第七次作业 1. 简述Spark SQL使用的数据抽象DataFrame与Dataset的区别。 DataFrame: 基于 Row 对象的二维表格结构,类似于关系型数据库中的表。 行和列都有明确的 Schema(模式),可以进行类型推断。 提供了丰富的操作接口&#xff…

行列视(RCV)数据安全如何保障?

行列视(RCV)的数据安全保障是一项至关重要的任务,涉及多个层面的技术和策略来确保数据的完整性、保密性和可用性。以下是关于RCV数据安全保障的几个方面: 首先,RCV采用了先进的加密技术来保护数据的传输和存储。通过使…

英伟达(NVIDIA)A800性能及应用场景

英伟达(NVIDIA)A800是一款高性能的人工智能(AI)加速卡,设计用于满足大规模深度学习、数据分析以及其他高性能计算需求。以下是其主要性能参数及应用概述: 性能参数: 数据传输速率:…

docker私有镜像仓库的搭建及认证

简介: docker私有镜像仓库的搭建及认证 前言 在生产上使用的 Docker 镜像可能包含我们的代码、配置信息等,不想被外部人员获取,只允许内 网的开发人员下载。 Docker 官方提供了一个叫做 registry 的镜像用于搭建本地私有仓库使用。在内部网…

苍穹外卖数据可视化

文章目录 1、用户统计2、订单统计3、销量排名Top10 1、用户统计 所谓用户统计,实际上统计的是用户的数量。通过折线图来展示,上面这根蓝色线代表的是用户总量,下边这根绿色线代表的是新增用户数量,是具体到每一天。所以说用户统计…

CS4344国产替代音频DAC数模转换芯片DP7344采样率192kHz

目录 DAC应用简介DP7344简介结构框图DP7344主要特性微信号:dnsj5343参考原理图 应用领域 DAC应用简介 DAC(中文:数字模拟转换器)是一种将数字信号转换为模拟信号(以电流、电压或电荷的形式)的设备。电脑对…

BSD盲区检测系统性能要求及试验方法

相关术语 盲区检测(bsd,blind spot detection)试验车辆(subject vehicle)目标车辆(target vehicle)横向距离(lateral distance):试验车车身最外缘(不包含外后视镜)与目标车辆车身最外缘(不包含外后视镜)之间的横向距离。 纵向距离(longitudinal distance):试验…

SpringBoot的第二大核心AOP系统梳理

目录 1 事务管理 1.1 事务 1.2 Transactional注解 1.2.1 rollbackFor 1.2.2 propagation 2 AOP 基础 2.1 AOP入门 2.2 AOP核心概念 3. AOP进阶 3.1 通知类型 3.2 通知顺序 3.3 切入点表达式 execution切入点表达式 annotion注解 3.4 连接点 1 事务管理 1.1 事务…

云计算与 openstack

文章目录 一、 虚拟化二、云计算2.1 IT系统架构的发展2.2 云计算2.3 云计算的服务类型 三、Openstack3.1 OpenStack核心组件 一、 虚拟化 虚拟化使得在一台物理的服务器上可以跑多台虚拟机,虚拟机共享物理机的 CPU、内存、IO 硬件资源,但逻辑上虚拟机之…

组装电脑(使用老机箱)

昨天同事拿来一台联想 ThinkCentre M6210t的台式机,说计算机实在是太慢了,在只保留主机箱想升级一下。   她拿来了配件,有电源、主板、CPU、CPU风扇、内存条、机箱风扇、硬盘:   主板:华硕 Prime H610M-K D4&#…

element-plus 自定义命名空间 el-config-provider namespace 不起作用,html 的class值改变了,但是样式不对

今天按照文档,对elemen plus vite 的项目,进行qiankun嵌套,发现子应用的element和主应用的element plus样式冲突,所以决定用element plus 的自定义命名空间处理下。 使用方法,按照文档来 第一步:vue文件内…