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

推荐订阅源

The Cloudflare Blog
小众软件
小众软件
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
T
Tailwind CSS Blog
WordPress大学
WordPress大学
有赞技术团队
有赞技术团队
博客园 - 司徒正美
V
Visual Studio Blog
G
Google Developers Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
月光博客
月光博客
aimingoo的专栏
aimingoo的专栏
博客园_首页
Blog — PlanetScale
Blog — PlanetScale
博客园 - 聂微东
S
SegmentFault 最新的问题
T
The Blog of Author Tim Ferriss
D
Docker
Vercel News
Vercel News
Recent Announcements
Recent Announcements
Last Week in AI
Last Week in AI
爱范儿
爱范儿
J
Java Code Geeks
大猫的无限游戏
大猫的无限游戏

博客园 - 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事件应该谨慎用之,特别是涉及到对其它依赖属性进行更改的时候。