前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >学习WPF——初识依赖项属性

学习WPF——初识依赖项属性

作者头像
liulun
发布2018-01-12 14:56:54
8950
发布2018-01-12 14:56:54
举报
文章被收录于专栏:liulunliulun

入门

首先创建一个依赖项属性

然后绑定父容器的DataContext到这个依赖项的实例

接着绑定子元素的属性到依赖项属性(注意Button的Content属性)

程序最终的运行结果:

说明

首先是定义表示属性的对象,一个依赖项属性的对象必然是DependencyProperty的实例 这个实例必须始终保持可用,所以这里定义为静态字段

根据约定,依赖项属性的字段名称使用Property结尾,上面例子使用的是NameProperty

依赖项属性实例的创建工作必须在使用之前完成,所以要么在定义的时候即完成实例化工作,要么在静态构造函数中完成这项工作

DependencyProperty没有公有的构造函数,必须使用DependencyProperty的Register函数来创建实例

依赖项属性实例创建出来之后,不允许修改,所以上面例子中NameProperty是只读的

最后一部是使用传统的.NET属性来封装WPF依赖项属性

不应该在.NET属性包装的时候添加验证属性值的代码、引发事件的代码

位于最顶端的元素,某一个属性设置了值,他的子元素也会继承这个属性的值

下面的例子中,我们设置Window元素的FontSize为30,这样Button的FontSize的属性值虽然没有设置

但他自动继承了Window的相关设置的值

(这非常像HTML中的样式设置)

如果我们不希望值继承的特性影响子元素的属性,那么只要给子元素相关属性设置你期望的值即可

但需要注意的是:

并不是所有的依赖项属性都有值继承的特性

总结

WPF中的依赖项属性和winform的属性起到的作用是一样的,但实现的机制却有着较大的区别

最主要的区别是WPF中的依赖项属性的值是存储在一个全局的哈希字典中的

这样做的好处是:

节约内存

winform中的90%的控件属性都存在默认值,为每个属性存储一个字段将是对内存的巨大浪费,依赖项属性系统仅存储改变过的值,对于默认值来说仅仅存储一次

值继承

当访问一个依赖属性的值时。如果当前没有值,则依赖属性会遍历整个逻辑树直至它找到一个值。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2015-01-16 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档