女生的最爱,装饰品。WPF也有,Adorner。(上海晒衣服理念)
说到装饰,不由要说到女性。
去年过年回家给我妈买了周大福项链,很明显就感觉待遇就不一样了,即使这样,还是被一个阿姨说应该买更重点的。看来钱这种东西果然是多一点才好。虽然自己无所谓,但让家里人更开心也是一种幸福啊。女朋友也很喜欢手链什么的,戴上手链气质的确会感觉挺不同的,我觉得这世界基本没有女生不喜欢身上装饰个神马的。
装饰不是衣服,也不会影响自己本来的搭配,它是一种在原本基础上锦上添花却不会影响原本结构的东西。
言归正传,假若你有个女朋友叫WPF,她有自己喜欢的搭配,当你追到她的时候她已经搭配好自己了,怎样才能在不改变她的同时加深下她的气质呢,那就需要钻石,项链。。Adorner。很突兀对么。其实Adorner和装饰物性质一样,需要一些努力(用时间来学习=金钱)之后就能取悦自己的女朋友了。
当你需要一个悬浮物不影响自己本来UI的建设,当你需要一个可以跟随你一个控件点击产生的跟随UI(比如点击一个按钮就在旁边出现一个小框,盖住之前UI的那种),当你需要一个可以定义为装饰而不是骨架的话,那就请使用装饰者模式。装饰模式是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。关于它的定义这里我就不概述了。链接直接给上http://baike.baidu.com/link?url=_c_YDD4bZSkpem21xAz6qTwU2HYHLxF2PBWFKQx7oGCIPnx2DUzq-KIU8Ni3h2alqYsZN8VY6pGDZkOZi84rZK
而在WPF中,最常用到的便是Adorner了。
在这里我便不赘述如何使用了,我会在最后给上链接,毕竟很多人写过,我希望我能做到的是能够把这个理念叙述清楚,而并不只是贴代码,授人以鱼不如授人以理念。
Adorner机制我觉得比较相似于上海晾衣服。上海是个很奇葩的城市,尤其是晾衣服。都是那种一根棍子串很多搭在外面架子上,我住在四楼,每次都战战兢兢。其实Adorner也类似,要晒的衣物便是Adorner里装的元素,衣服那根棍子是AdornerLayer,架子则是AdornerDecorator。
自己写好的元素装进Adorner里,用AdornerLayer串好,搭在AdornerDecorator的架子上。便是整个Adorner的实现。
自己感觉这里就结束还蛮突兀的,但实际上也就是那么简单。解耦和,分成各个功能模块,然后再组合在一起工作,这种方式着实令人着迷,也非常容易理解。
具体的使用方法和解释下面我就贴上来吧,站在巨人肩膀上才能更伟大,谢谢软件这个行业善于分享带来的世界的善意。
概念:http://www.cnblogs.com/loveis715/archive/2012/03/31/2427734.html
结构图:http://www.cnblogs.com/lusonixs/articles/1588859.html
CodeProject精品例子:http://www.codeproject.com/Articles/54472/Defining-WPF-Adorners-in-XAML
http://www.codeproject.com/Articles/709266/Design-Adorners-in-XAML-with-Data-Binding-Support
http://www.codeproject.com/Articles/72544/Editable-Text-Block-in-WPF
女生的最爱,装饰品。WPF也有,Adorner。(上海晒衣服理念)的更多相关文章
- WPFのDecorator 、Adorner和AdornerDecorator
Decorator 和 Adorner 它们都有“装饰品”的意思. Decorator类负责包装某个UI元素,以提供额外的行为.它有一个类型为UIElement的Child属性,其中含有待包装的内容. ...
- WPF Adorner
之前做项目时,为了实现类似微信消息数目的效果 image.png ,我之前是修改的ControlTemplate.类似于将一个带数字的控件,放在另一个控件的右上角,来实现的这个效果. 原来WPF有 ...
- WPF中的数据驱动
在WPF出现之前,Win Form,ASP.NET等技术均采用“事件驱动”理念,这种由“事件-订阅-事件处理器”关系交织在一起构成的程序,景观可以使用MVC.MVP等设计模式,但一不小心就会使界面逻辑 ...
- [WPF]WPF开发方法论
纵观Windows GUI应用程序开发方法,从Windows API.MFC到Visual Basic再到.NET Framework,WPF的开发方法论是在.NET Framework方法论的基础上 ...
- 图文列表,关于Simpleadapter
main.xml: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xm ...
- emouse思·睿—评论与观点整理之二
虽说我主要做的硬件,平时的兴趣爱好比较关注移动互联网,混迹于虎嗅.爱范儿.雷锋网.36Kr.cnBeta.瘾科技.i黑马.TechWeb等这类科技以及创业媒体,遗憾的是系统的去写的并不多,好在还算充分 ...
- sell01 环境搭建、编写持久层并进行测试
1 环境配置 JDK 1.8 MAVEN 3.5 MYSQL 5.7 VirtualBox 5.1 2 搭建MYSQL环境 下载 VM 和 虚拟镜像文件 虚拟镜像文件:点击前往 技巧01:安装完vir ...
- MySQL数据类型——数值类型
1.1.1 整型 整型 占用字节 范围 范围 tinyint 1 -27~27-1 -128~127 smallint 2 -215~215-1 -32768~32767 mediumint 3 -2 ...
- 淘宝杨志丰:OceanBase--淘宝结构化大数据解决之道
时至今日,“Big data”(大数据)时代的来临已经毋庸置疑,尤其是在电信.金融等行业,几乎已经到了“数据就是业务本身”的地步.这种趋势已经让很多相信数据之力量的企业做出改变.恰逢此时,为了让更多的 ...
随机推荐
- eclipse控制台乱码
- ZooKeeper之FastLeaderElection算法详解
当我们把zookeeper服务启动时,首先需要做的一件事就是leader选举,zookeeper中leader选举的算法有3种,包括LeaderElection算法.AuthFastLeaderEle ...
- SVN基本指令
Svn使用: Versions: Cornerstone: 如果命令行不出来,可以设置commonsline Tools 命令行:svn heip 获取服务器端数据 svn checkout 远端ur ...
- css定位学习经验记录
之前了解到css的定位position属性,常用的三种: position:absolute 1.当父元素定位为relative时,以父元素为起始坐标定位. 2.当父元素没有定位时,以body为起始坐 ...
- mybatis配置文件的bug
看看图片里的配置有什么问题么? url=jdbc--我擦,我怎么这么不小心,换来一整天的不得安宁,上网各种搜bug,把mysql驱动配置到classpath中,jar包放进jdkjre里面还是不行妈的 ...
- JQuery基本知识框架思维导图(上)
一:认识jQuery 1.window.onload与$(document).ready()的对比 2.jQuery代码风格(1:链式代码风格2:位代码添加注释) 3.jQuery对象和DOM对象(1 ...
- 浅谈我对 jQuery 的了解
总述 0 获取 jQuery 对象 1 对象跳转 2 方法调用 3 常用API 4 $(…); 5 jQuery 对象获取 6 Data 相关方法 7 选择器 8 基本的过滤器 9 内容过滤选择器 1 ...
- ubuntu下安装了express2.5.8,如何更新它?
在ubuntu上通过apt-get install node-express,结果发现它的版本是2.5.8. 想安装express4.0+的版本,一直不能正确安装,所以一时兴起,打算先删掉它,再重新安 ...
- webview使用技巧汇总
1.webview去除原网址的广告或者标题 js语句 document.documentElement.getElementsByClassName('这里写你要消除的空间的class里面的字符串') ...
- 自定义委托类型 - .Net自带委托类型
委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递. 与其他的类不同,委托类具有一个签名,并且它只能对与其签名匹配的方法进行引用. 一.自定义委托类型 1.语法结构:访问修 ...