首页 > 其他分享 >.NET|--WPF|--笔记合集|--依赖项属性|--1.定义依赖项属性

.NET|--WPF|--笔记合集|--依赖项属性|--1.定义依赖项属性

时间:2024-08-31 10:48:03浏览次数:11  
标签:依赖 定义 自定义 -- WPF 属性

前言


一般情况下, 我们是不用定义依赖项属性的, 
更多的是直接使用即可.

那么何时需要我们定义依赖项属性呢? 
1.设计自定义的WPF元素;
2.为原本不支持数据绑定,动画等WPF功能的代码中, 
需要添加数据绑定, 动画等WPF功能时.

定义依赖项属性


一般的类型来说, 如果想要使用的话, 就2步骤, ["定义", "实例化"]

依赖项属性如果想要使用的话, 主要的步骤有[ "定义", "注册" ]
其实"注册"就是将一个复杂的"实例化"过程, 封装起来了.
大家不了解依赖项属性具体的"实例化"过程, 直接"注册"就行了.

很幸运, "定义"步骤和定义其它类型一样,
比如, 定义一个string类型的话"string myString;"
那么定义一个依赖项属性也是一样的↓
// 定义一个依赖项属性"ZzzProperty"
public DependencyProperty ZzzProperty;

WPF元素"System.Windows.Controls.TextBlock"定义一个依赖项属性
// "System.Windows.Controls.TextBlock"的"TextProperty"
public static readonly DependencyProperty TextProperty;
注意事项!
# 1.依赖项属性名字是有规范
# 2.依赖属性名称在注册类中必须是唯一的。 
#   通过基类型继承的依赖属性已注册,无法由派生类型注册。

根据约定, 定义依赖项属性的字段的名称是在普通属性的末尾处加上单词"Property".
根据这种命名方式, 可从实际属性的米改昵称中区分出依赖项属性的定义.
----摘抄自<<WPF编程宝典(第4版)>>(84页)

对于属性系统的正常行为,为依赖属性建立的命名约定是必需的。
创建的标识符字段的名称必须是属性的已注册名称并且具有后缀 Property。
----摘抄自(官方文档)

摘抄

何时使用依赖项属性

显然,如果正在设计自定义的WPF元素, 它们肯定是关键部分.
然而,当希望为原本不支持数据绑定, 动画或其他WPF功能的部分代码添加这些功能时,
也需要创建依赖项属性.

这段话说明了何时使用依赖项属性呢?
1.设计自定义的WPF元素
2.为原本不支持数据绑定,动画的代码, 比如, 第三方控件或库中的某些属性不支持数据绑定. 这时需要定义依赖项属性.

总结, 就是如果要使用依赖项属性了, 就去定义依赖项属性. (一句废话,哈哈,,,)
就是需要用到依赖项属性的支持的功能了, 
像自定义WPF元素和使用第三方控件, 都是需要去定义依赖项属性的.

如果非要杠的话, 自定义的WPF元素, 不需要依赖项属性的功能, 
那么设计自定义的WPF元素中也可以不定义依赖项属性.

其实读技术书的时候,
才真正提现了"阅读理解"重要性, 该段话体现了作者什么样的思想感情 ?
答 : 体现了作者啥思想情感不太清楚, 但是体现了WPF依赖项属性作用...

插曲::定义依赖项属性 Vs 自定义依赖项属性

# 关于定义依赖项属性这里还有个小插曲 ~ 

在书籍<<WPF编程宝典(第4版)>>中一个章节叫"定义依赖项属性"
在官方文档中有一个章节叫"自定义依赖属性"

刚开始以为是2回事, 其实核心就是一回事, 
如果把这2个描述换个说法,我觉得就会好理解一些. 

"定义依赖项属性"换个叫法"如何定义依赖项属性的?"
"自定义依赖项属性"换个叫法"自己如何定义依赖项属性的?"

按照上面的逻辑,
"定义依赖项属性"包括["自己如何定义依赖项属性","别人如何定义依赖项属性"],
所以推导出,
"定义依赖项属性"范围更大一些,包括"自定义依赖项属性".
所以这篇笔记就叫做"定义依赖项属性".

但是随着我把官方和书籍中的内容扫了一下,
发现这2个地方对于"定义"的解释不太一样...

<<WPF编程宝典(第4版)>>中"定义依赖项属性"中真的只有"定义",
就像定义一个字符串"string myString = \"Hello, World!\";",
就这么简单...

但是在官方文档中,"自定义依赖项属性"中有["依赖属性标识符","依赖属性包装器","注册属性","依赖属性源数据"]...这么多事情!

所以<<WPF编程宝典(第4版)>>重点在"定义",
官方文档中重点在"依赖项属性"本身上,

使用代码表示的话,
<<WPF编程宝典(第4版)>>只是定义了一个string变量而不赋值 → "string myString;"

官方文档中不仅定义了一个string变量,而且还实例化了, 并且介绍了是实例化的时候一些参数,

还没开始做笔记, 就在概念上绕了一圈, 
实在在不同的上下文("书籍","官方文档","其它博客")中,同样的词确实又不一样的理解,

我这个人是很简单的, 所以我这篇笔记按照<<WPF编程宝典(第4版)>>上下文中的意思来写...

并且学习中确实有很多拦路虎, 信息太多了, 这些不同的信息, 
都是一层层的"外相", 简称"相", 我们只有了解了各个"相", 才能把握到核心的本质问题.

其实就是类"DependencyProperty"如何定义和实例化...

结尾


好家伙, 这篇笔记写完, 就是带大家重温下, 如何定义一个类...

标签:依赖,定义,自定义,--,WPF,属性
From: https://www.cnblogs.com/love-zf/p/18389967

相关文章

  • .NET|--WPF|--笔记合集|--依赖项属性|--4.依赖项属性值优先级
    前言前几篇笔记讲到了依赖项属性的定义,注册等.接下来就该是依赖项属性的实战了.如果依赖项属性是一个主机的话,前几个步骤还在于组装这个主机,组装好了之后,就要开始使用了,是骡子是马,拉出来遛遛.但是一般任何事物在使用之前,都有一些注意事项,如果不了解这些注......
  • 8.4linux定时任务-环境变量-数据库
    配合SUID本地环境变量提权思路原理:利用sh环境变量替换,使得/tmp/ps得到root权限;ps=sh过程:手写调用文件-编译-复制文件-增加环境变量-执行gccdemon1.c-oshellcp/bin/sh/tmp/psexportPATH=/tmp:$PATH#webshell权限无法设置环境变量./shellid提前本地定时任务(cronta......
  • .NET|--WPF|--笔记合集|--依赖项属性|--3.属性包装器
    前言属性包装器的主要作用是将依赖属性的访问方式转换为标准的CLR属性访问方式,从而使代码更加简洁、直观,并提供一致性和更好的开发体验。通过属性包装器,开发者可以利用依赖属性的高级功能,同时保持代码的可读性和易用性。"属性包装器"在TextBlock源码中使用publicclass......
  • [DPDK] Docker容器内安装DPDK
    Docker安装DPDK参考:容器安装DPDK。确认版本兼容性我使用的是Mellanox-5网卡。为了确认支持的DPDK版本,请先确认自己的OFED和frimware版本。查看firmware版本:$ibstatCA'mlx5_0'CAtype:MT4119Firmwareversion:16.35.3006查看OFED版本:$ofed_info-......
  • linux磁盘已满,查看哪个文件占用多
    使用df-h查看磁盘空间占用情况FilesystemSizeUsedAvailUse%Mountedonudev3.9G03.9G0%/devtmpfs799M3.1M796M1%/run/dev/vda199G99G0G100%/tmpfs3.9G03.9G0%/dev/shmtmpfs......
  • 一个免费好用的魔法
    这款虽然是免费的但一天只能免费一个小时,但你可以多造几个号就能一直免费用的时候要把火绒,360等类似的软件关了,不然有时候会得不了。因为是免费的所以有人数限制,一般在9.30之后人都特别多,只有到晚上或者中午和早上时候人少,手机端和PC端是分开的,手机端人是特别少的。官网连接:htt......
  • 网络安全公开数据集Maple-IDS,恶意流量检测数据集开放使用!
    MapleDataset枫叶数据集MapleDataset枫叶数据集由东北林业大学网络安全实验室(https://maple.nefu.edu.cn/lab/)公开发布,是用于入侵检测评估的数据集,其目的在于提升异常基础入侵检测系统(IDS)以及入侵预防系统(IPS)的性能与可靠性。在网络攻击愈发复杂的当下,拥有一个可靠且紧跟时代的......
  • vue3 导出为Excel文件
    服务端给的一个下载接口:/order/exportOrderOpenInvoice导出转化为ExcelconstexportOrder=async()=>{ letreqData={};  letexportOrderOpenInvoiceUrl="/order/exportOrderOpenInvoice";   try{   constresponse=awaitaxios.get(exportOrderOpenInvo......
  • 【网络知识系列】域名抢注
    原创祺印说信安以下文章来源于河南等级保护测评,作者铸盾安全一、概述域名仿冒尝试利用用户在地址栏中直接输入URL时引入的印刷错误(即“打字错误”)。通过利用用户错误,网络威胁行为者将毫无戒心的用户引导至与原始域名极为相似的非法域名。这种策略涉及购买和注册与现有域名......
  • vivo手机导出微信聊天记录方法
    1,先在手机上打开“开发人员选项”并将USB调试功能打开。再将手机通过数据线连接到电脑,打开电脑上已经安装好的“互传备份助手”(点击此处进入下载页面),再点击界面上的新建备份。注意:在电脑上运行互传备份助手时,会提醒手机上也要安装互传助手,按提示安装即可。 2,在互传备份助手窗......