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

前言


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

那么何时需要我们定义依赖项属性呢? 
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"如何定义和实例化...

结尾


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

posted @ 2024-08-31 10:52  zh89233  阅读(20)  评论(0编辑  收藏  举报