女生的最爱,装饰品。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”(大数据)时代的来临已经毋庸置疑,尤其是在电信.金融等行业,几乎已经到了“数据就是业务本身”的地步.这种趋势已经让很多相信数据之力量的企业做出改变.恰逢此时,为了让更多的 ...
随机推荐
- JS挂马攻防
JS挂马攻防实录 攻现在最多见的JS挂马方法有两种,一种是直接将JavaScript脚本代码写在网页中,当访问者在浏览网页时,恶意的挂马脚本就会通过用户的浏览器悄悄地打开网马窗口,隐藏地运行(图1), ...
- 设置NotePad++设置"不打开上次关闭的文件"
notepad++是一个很好的记事本工具,但是默认会记录上次打开时未关闭的文件,但是实际上用起来并不方便, 可以按照下面的方式去除,notepad++版本:v6.6.2,os:win7 64位 按照以 ...
- Hibernate 非常见异常集合
异常一:org.hibernate.AnnotationException: Collection has neither generic type or OneToMany.targetEntity ...
- C++ 代码优化
1.类中所有的属性全部设置为private 然后在需要在外部调用的属性,每个都自己写Get方法返回,或者用Set方法设置 2.类成员变量采用m_前缀,代表类成员 3.采用单例模式 //设置类名为CCo ...
- 丢手帕问题即约瑟夫问题的PHP解法
问题描述:n个人排成一圈.从某个人开始,依次报数,数到m的人被杀死.下一个人重新从1开始报数,数到m的人被杀死.直到剩下最后一个人. 解决思路:从数学角度去看,每一次报数决定谁去死是一个n.m的求余数 ...
- 如何让TortoiseSVN导出新增或修改过的文件
利用Windows系统下的TortoiseSVN客户端,可以导出指定版本之间修改过的文件,并保留完整的文件夹结构.下面我就来说说操作的步骤: 1.在网站项目的根目录下右键选择 “TortoiseSVN ...
- 关于CSV文件 Excel打开乱码问题的解决方案
近日写java程序中,将数据输出到csv文件中,发现Excel打开之后,中文均为乱码 于是寻找解决方案,发现最简单的方式还是如此了 1. 将输出的csv文件用记事本打开 2. 另存为将文件编码格式改为 ...
- T-SQL Recipes之Index Defragmentation
The Problem 索引一直是优化查询性能的不二法门.其中一个最直接的问题便是当审查一个低性能查询语句时,检查索引是否在正确的地方或者加索引没有.运行一个batchjob查看索引碎片,必要时采取步 ...
- JAVA实现AES 解密报错Input length must be multiple of 16 when decrypting with padded cipher
加密代码 /**解密 * @param content 待解密内容 * @param password 解密密钥 * @return */ public static byte[] decrypt(b ...
- sass和compass的配置
http://note.youdao.com/share/?id=4f57187f9695bcaadf80516187d2de0e&type=note 当执行安装sass出错时,可以试试这个命 ...