惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
The GitHub Blog
The GitHub Blog
F
Fortinet All Blogs
Cloudbric
Cloudbric
P
Palo Alto Networks Blog
T
Threatpost
T
Tor Project blog
T
Tenable Blog
AWS News Blog
AWS News Blog
Project Zero
Project Zero
L
LangChain Blog
Cyberwarzone
Cyberwarzone
Engineering at Meta
Engineering at Meta
雷峰网
雷峰网
C
CERT Recently Published Vulnerability Notes
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Security Latest
Security Latest
云风的 BLOG
云风的 BLOG
I
Intezer
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
P
Proofpoint News Feed
A
Arctic Wolf
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Google DeepMind News
Google DeepMind News
V
Vulnerabilities – Threatpost
C
Cybersecurity and Infrastructure Security Agency CISA
MongoDB | Blog
MongoDB | Blog
aimingoo的专栏
aimingoo的专栏
K
Kaspersky official blog
Jina AI
Jina AI
N
News | PayPal Newsroom
T
The Blog of Author Tim Ferriss
D
DataBreaches.Net
A
About on SuperTechFans
博客园 - 三生石上(FineUI控件)
博客园 - 【当耐特】
Hugging Face - Blog
Hugging Face - Blog
Recorded Future
Recorded Future
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
S
Secure Thoughts
TaoSecurity Blog
TaoSecurity Blog
P
Privacy & Cybersecurity Law Blog
P
Proofpoint News Feed
MyScale Blog
MyScale Blog
IT之家
IT之家
Forbes - Security
Forbes - Security
The Hacker News
The Hacker News
Last Week in AI
Last Week in AI
T
Threat Research - Cisco Blogs
Y
Y Combinator Blog

博客园 - From Ocean

how to solve error when start Hyper-V quick create app error log4j 2使用properties文件进行配置 (转载)Tips on using log4net RollingFileAppender by Rohit Gupta (Asp.Net)转载-用Powershell 建立IIS web site (DP)降低代码重构的风险(转载) (Life)牛人的学习方法(转译文) (WPF)WPF事件要点-WPF宝典笔记 (WPF)路由事件要点-WPF宝典笔记 (Ruby)Ubuntu12.04安装Rails环境 (Ruby)方法的一些有趣的地方--待补充 (Ruby)Ruby中区块用的一些潜藏关键字 (Ruby)类变量,实例变量,类常量,如何访问变量 (WPF)WPF要点之命令-深入浅出WPF笔记 (WPF)WPF要点之事件-深入浅出WPF笔记 (Algorithm)计算机科学中最重要的32个算法_转载infoq上的文章 (转载)postgresql无法远程登录(设置远程登陆的三点注意事项) (.Net,DevExpress)关于devexpress部分aspx控件需要注意的细节_持续补充ing (.Net,DevExpress)devexpress源码编译需要注意的地方 (Silverlight,WCF,Socket,Cocurrency)一周浏览碰到不错的文章
(WPF)依赖属性要点-WPF宝典笔记
From Ocean · 2012-10-09 · via 博客园 - From Ocean

依赖属性是建立在原有类属性基础之上的,且只能作用于dependencyobject对象上。可以当作wpf做了一个wrapper,声明依赖属性之前需要针对该属性的source和target以及影响范围先实例化一个frameworkmetadata的元数据,然后再对该属性进行register;接着利用dependencyobject自带的setvalue和getvalue方法进行类属型层次的封装。

某些类的依赖属性是可以共享的,通过调用该属性的addowner方法重用该属性,达到节约内存的目的

依赖属性还提供了一种较为特殊的兄弟:附加属性,它同样需要metadata实例一起使用registerattached方法进行声明,而且因为该特例的使用较为特殊相当于给其他类添加上本来就不具备的属性,所以不需要为该类属性加以普通.net属性具备的get和set的wrapper,但是需要声明两个静态方法g(s)etpropertyname以调用附加属性操作的目标类型的setvalue和getvalue方法从而取值和赋值。

tip:即使依赖属性未以附加属性进行声明,目标类型仍然可以利用setvalue方法对该依赖属性进行赋值,但是xaml代码中是不会有智能提示。

对于依赖属性的赋值,wpf提供了3种回调事件(根据触发链顺序)coercevaluecallback、validatevaluecallback和propertychangedcallback,前一事件未顺利触发的话均会导致后面的事件无法触发。由于validatevaluecallback无法访问到依赖属性的源对象即无法根据其他属性进行判断,因此碰到类似情况可以考虑利用coercevaluecallback事件(该事件是绑定到metadata上,因此其参数包含有源对象).对于coercevaluecallback事件应该谨慎用之,特别是涉及到对其它依赖属性进行更改的时候。