wpf依赖属性_wpf 依赖属性默认值-程序员宅基地

技术标签: WPF  

依赖属性:依赖属性就是一种自己可以没有值,并且可以通过绑定从其他数据源获取值。依赖属性可支持WPF中的样式设置、数据绑定、继承、动画及默认值。

但是将所有的属性都设置为依赖属性并不总是正确的解决方案,具体取决于其应用场景。有时,使用私有字段实现属性的典型方法便能满足要求。MSDN中给出了下面几种应用依赖属性的场景:

希望可在样式中设置属性。

希望属性支持数据绑定。

希望可使用动态资源引用设置属性。

希望从元素树中的父元素自动继承属性值。

希望属性可进行动画处理。

希望属性系统在属性系统、环境或用户执行的操作或者读取并使用样式更改了属性以前的值时报告。

希望使用已建立的、WPF 进程也使用的元数据约定,例如报告更改属性值时是否要求布局系统重新编写元素的可视化对象。

依赖属性的特点

1、属性变更通知

无论什么时候,只要依赖属性的值发生改变,wpf就会自动根据属性的元数据触发一系列的动作,这些动作可以重新呈现UI元素,也可以更新当前的布局,刷新数据绑定等等,这种变更的通知最有趣的特点之一就是属性触发器,它可以在属性值改变的时候,执行一系列自定义的动作,而不需要更改任何其他的代码来实现。通过下面的示例来演示属性变更通知

如图实例

前台XAML代码

依赖属性:依赖属性就是一种自己可以没有值,并且可以通过绑定从其他数据源获取值。依赖属性可支持WPF中的样式设置、数据绑定、继承、动画及默认值。

但是将所有的属性都设置为依赖属性并不总是正确的解决方案,具体取决于其应用场景。有时,使用私有字段实现属性的典型方法便能满足要求。MSDN中给出了下面几种应用依赖属性的场景:

希望可在样式中设置属性。

希望属性支持数据绑定。

希望可使用动态资源引用设置属性。

希望从元素树中的父元素自动继承属性值。

希望属性可进行动画处理。

希望属性系统在属性系统、环境或用户执行的操作或者读取并使用样式更改了属性以前的值时报告。

希望使用已建立的、WPF 进程也使用的元数据约定,例如报告更改属性值时是否要求布局系统重新编写元素的可视化对象。

依赖属性的特点

1、属性变更通知

无论什么时候,只要依赖属性的值发生改变,wpf就会自动根据属性的元数据触发一系列的动作,这些动作可以重新呈现UI元素,也可以更新当前的布局,刷新数据绑定等等,这种变更的通知最有趣的特点之一就是属性触发器,它可以在属性值改变的时候,执行一系列自定义的动作,而不需要更改任何其他的代码来实现。通过下面的示例来演示属性变更通知

如图实例

前台XAML代码
在这里插入图片描述

C#后台代码:

在这里插入图片描述

实现样式

在这里插入图片描述

上面的是使用C#后台代码来控制鼠标移入移出使button中的文字变色的

下面是使用依赖属性XAML

在这里插入图片描述

使用上面的两种方式都可以实现Button按钮的前景色改变

依赖属性和CLR属性在内存的使用上是截然不同的,每个CLR属性都包含一个非static的字段,因此当我们实例化一个类型的时候,就会创建该类型所拥有的所有CLR属性,也就是说一个对象所占用的内存在调用new操作进行实例化的时候就已经决定了、而wpf允许对象在创建的时候并不包含用于存储数据的空间,只保留在需要用到数据的时候能够获得该默认值,即用其他对象数据或者实时分配空间的能力。

C#后台代码:

实现样式

上面的是使用C#后台代码来控制鼠标移入移出使button中的文字变色的

下面是使用依赖属性XAML

使用上面的两种方式都可以实现Button按钮的前景色改变

依赖属性和CLR属性在内存的使用上是截然不同的,每个CLR属性都包含一个非static的字段,因此当我们实例化一个类型的时候,就会创建该类型所拥有的所有CLR属性,也就是说一个对象所占用的内存在调用new操作进行实例化的时候就已经决定了、而wpf允许对象在创建的时候并不包含用于存储数据的空间,只保留在需要用到数据的时候能够获得该默认值,即用其他对象数据或者实时分配空间的能力。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_44368963/article/details/89638395

智能推荐

红旗 6.0 安装mysql_红旗Linux6.0+Apache+Mysql+PHP配置全过程-程序员宅基地

文章浏览阅读357次。红旗Linux6.0+Apache+Mysql+PHP配置全过程发布时间:2008-11-03 11:07:13来源:红联作者:wangel刚来论坛,想做点什么,不过我是菜鸟,只能写写自己的体会。这篇文章是从网上教程并根据自己遇到实际的情况做了些修改。好了闲话少说,我们现在开始需要软件:红旗Linux桌面版6.0 apache2.2.6 mysql5.0.45 PHP5.2.4 (具体版本可能...

学习Hadoop第二十七课(HBase理论一)_先学hadoop还是先学hbase-程序员宅基地

文章浏览阅读211次。上节课我们一起学习了HBase集群的搭建,这节课我们一起来简单学习一下HBase的理论知识。 我们首先来看一下下面这张图,HBase存储数据也是存储到表中(这点和我们的关系型数据库是类似的),一个row key保存一行内容,与关系型数据库不一样的地方是,HBase数据库的表中引入了列族的概念,一个列族可以包含0到多个列,列族和列名结合组成一个cell,cell中才是我们存放的数据。从..._先学hadoop还是先学hbase

batch size大小的选择与显存_batchsize和显存-程序员宅基地

文章浏览阅读2.5k次,点赞2次,收藏4次。因为越大,虽然线程多了,但是切分到每一个线程消耗也大了,所以会增加CPU的负荷,从而降低对GPU的利用。模型的加载很难控制(但是考虑到部署的话就要考虑模型加载需要的显存问题了),一般调节batch_size来控制显存的占用(若出现out of memry,那就调batch_size就完事了)梯度累加则实现了batchsize的变相扩大,如果accumulation_steps为8,则batchsize '变相' 扩大了8倍,是解决显存受限的一个不错的trick。GPU利用率低的因素有很多,一般情况下,_batchsize和显存

移植Ubuntu-base-14.04到firefly-rk3288的开发板上_rk3328 ubuntu-base desktop-程序员宅基地

文章浏览阅读3.3k次,点赞3次,收藏9次。1.先从官方上获取ubuntu core的tar包:$ wget http://cdimage.ubuntu.com/ubuntu-base/releases/14.04/release/ubuntu-base-14.04-core-armhf.tar.gz2.下载完后,解压到rootfs/ubuntu目录:$ mkdir ubuntu$ sudo tar -xpf ubunt..._rk3328 ubuntu-base desktop

python编写时怎么换行_python换行-程序员宅基地

文章浏览阅读6.8k次,点赞2次,收藏4次。我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。_python换行

随便推点

spring源码导入IDEA构建时报org.springframework.oxm.jaxb.test不存在问题的解决方案(spring-oxm缺少castor和jaxb)_程序包org.springframework.oxm.jaxb.test不存在-程序员宅基地

文章浏览阅读2.3k次,点赞4次,收藏3次。spring-oxm缺少castor和jaxb解决方案:然后重新build一下即可._程序包org.springframework.oxm.jaxb.test不存在

java给HSSFSheet设置宽度_hssfsheet 设置宽度-程序员宅基地

文章浏览阅读7.2k次。(HSSFCell.CELL_TYPE_STRING); //设置单元格为 STRING 类型 cell.getNumericCellValue();//读取为数值类型的单元格内容 9、 设置列宽、行高 设置列宽、 sheet.......(); } } <3> 考虑到是内容格式问题,通过代码设置了行高大小,行高起到了作用 ,内存增大问题没有解决 示例代码 public static ..._hssfsheet设置列宽

vsc 的c环境配置_vsc apt-程序员宅基地

文章浏览阅读1.1k次。vsc配置docker容器中的c环境环境:ubuntu,vsc,g++&gcc&gdb(确保有以上的GUN工具,没有安装的可以通过apt安装)创建工程文件夹(test)使用vsc打开该文件夹,在该文件夹中添加hello.c文件,编写简单程序,并通过gcc -g -o hello hello.c编译c文件,生成hello二进制可运行文件,可以使用./hello直接运行该文件。vsc配置在vsc的扩展中安装C/C++安装后按f5,选择C++(GDB/LLDB),选择默认配置,_vsc apt

MySQL获取当前日期、时间、时间戳的函数sysdate()、now()、current_timestamp()、localtimestamp()、localtime()对比,区别、异同点_sysdate和now-程序员宅基地

文章浏览阅读5.5w次,点赞9次,收藏5次。【代码】MySQL获取当前日期、时间、时间戳的函数sysdate()、now()、current_timestamp()、localtimestamp()、localtime()对比,区别、异同点。_sysdate和now

【RecyclerView】【Glide】列表加载多图卡顿_recyclerview+glide 卡顿-程序员宅基地

文章浏览阅读3.1k次。记录一次列表加载很多图片时卡顿的问题现象:仿微信朋友圈列表,多图九宫格布局,随着加载数据的增加,列表越来越卡顿,但是再次刷新之后,列表重归流畅问题猜测及尝试解决:1.图片缓存增多:采用图片加载栈缓存清除+预加载方案,实测效果并不理想,非本质问题2.图片缩放处理:调用override() 方法,对图片进行压缩,实测确实有效果,单还会有卡顿现象,增大压缩率后,卡顿现象确实有很大的优化,但是伴随的却是列表中的图片非常模糊.....3.图片的圆角处理:在咨询了一位安卓大佬后,提出了把图片的._recyclerview+glide 卡顿

Tomcat 8(二)server.xml详解_tomcat8 server.xml-程序员宅基地

文章浏览阅读1.6k次。Tomcat服务器是由一系列可配置的组件构成的,其中核心组件是Catalina Servlet,它是最顶层组件。Tomcat的各组件是在server.xml(CATALINA_HOME\conf\server.xml)配置的Tomcat各组件关系图1. ServerServer即Catalina servlet组件,它是server.xml的最外层元素常用属性:Ad_tomcat8 server.xml

推荐文章

热门文章

相关标签