原文:【全面解禁!真正的Expression Blend实战开发技巧】第十章 FluidMoveBehavior完全解析之三飞出ListBox吧

  刚才有人说我的标题很给力,哈哈。那这个标题肯定更给力了,“飞出ListBox吧”。你可以在www.kaodigua.net上看到具体的效果。下面是效果截图:

    

  

  当用户选择ListBox中某一项时,这个被选中的Item从ListBox中飞出来,平稳的屏幕中央。这是我自己最喜欢的一个特效。实现起来依然不是很困难。不过在开始之前,还是先废话几句,FluidMoveBehavior其实一点没有用,它不提供任何任务操作,不简化反而是增加了界面的工作量。但他对程序员来说是一种史无前例。在silverlight开发中,出现了一种大家很喜欢且争先恐后要掌握的“没用”技能。这预示着silverlight未来一定会引领一场革命。

  开始正题,这一章会步骤稍微有点多,请先打开Blend,新建一个示例数据源,只定义一个属性,名为Image,类型也是Image。如下图:

    

  

  然后,点击Collection节点,直接把他拖拽到LayoutRoot中。这样会自动生成一个ListBox,我们设置一下ListBox的位置和宽度,让他靠左边对其。如下图所示。

    

  然后在LayoutRoot的中间,新建一个Grid,在里面放一个Image。Image填充整个Grid。注意Image目前不必指定图片源。就让他空在哪里。如下图。

        

  

  然后点击这个新建好的Gird,在右侧属性面板中找到DataContext属性,点击最右侧的,在弹出菜单中选择DataBinding...

    

    

  接下来,在弹出菜单中,打开Element Property选项卡,然后选择ListBox,接着在Properties列表里选中SelectedItem,点击OK按钮。

    

  接下来,请选中刚才新建的Image控件,在右侧属性面板中,与上面相同,找到Source属性,点击最右侧的,在右键弹出菜单中选择DataBinding...

    

  在弹出窗口中,选择DataContext选项卡,这里可以看到文章开始时让他创建的示例数据源,直接选中Image,点击OK按钮。

    

  接下来,为Grid添加一个 FluidMoveBehavior

    

  AppliesTo属性设置为self。

    

  InitalTag属性设置为DataContext。

    

  如果你前几部都做对了,应该得到如下效果。

      

  接下来很关键的一步,请右击ListBox,在弹出菜单中依次选择Edit Additional Template->Edit Generated items->Edit Current,进入模板编辑界面。

    

  为Image元素添加一个名为"FluidMoveSetTagBehavior"的行为。 注意这里是FluidMoveSetTagBehavior而不是FluidMoveBehavior

    

  在右侧属性面板里设置FluidMoveSetTagBehavior的Tag属性为DataContext

    

  点击F5运行得到最终效果如下图

    

  恭喜给位,你们已经学会了独门秘籍,在这个文章没有被地球人都知道前,赶快做一个,然后秀给你们的朋友看。他们一定会惊呼不可思议。当然你还可以发挥一下自己的美术功底,把它设计的像www.kaodigua.net上那样很美观,很专业。

  源码下载

  如果你喜欢我的文章,请点一下右下角的“推荐”,如果你没有注册博客园,我建议你注册一个账号,然后再点推荐和关注我。这样我文章更新时你可以第一时间得到通知。如果你第一次读我的文章,我建议你从第一章开始从头学起。本文中包含很多手法,细节,我没有单独列出,都在某一章的某张图片中体现。这三章真的很精彩,让你简单实现从前难以想象的UI特效。强烈建议你将它推荐给你的朋友,家人,媳妇,爸爸妈妈,还有未来的老丈人。如果你有七舅老爷的话,你还可以......= =!

 

  上班了,回见!

【全面解禁!真正的Expression Blend实战开发技巧】第十章 FluidMoveBehavior完全解析之三飞出ListBox吧的更多相关文章

  1. 【全面解禁!真正的Expression Blend实战开发技巧】十一章 全面解析布局(Grid & Canvas &StackPanel &Wrappanel)

    原文:[全面解禁!真正的Expression Blend实战开发技巧]十一章 全面解析布局(Grid & Canvas &StackPanel &Wrappanel) 写这篇文 ...

  2. 【全面解禁!真正的Expression Blend实战开发技巧】第九章 FluidMoveBehavior完全解析之二平滑运动的滚动条

    原文:[全面解禁!真正的Expression Blend实战开发技巧]第九章 FluidMoveBehavior完全解析之二平滑运动的滚动条 这一章讲解FluidMoveBehavior的另一个应用, ...

  3. 【全面解禁!真正的Expression Blend实战开发技巧】第七章 MVVM初体验-在DataGrid行末添加按钮

    原文:[全面解禁!真正的Expression Blend实战开发技巧]第七章 MVVM初体验-在DataGrid行末添加按钮 博客更新较慢,先向各位读者说声抱歉.这一节讲解的依然是开发中经常遇到的一种 ...

  4. 【全面解禁!真正的Expression Blend实战开发技巧】第八章 FluidMoveBehavior完全解析之一漂浮移动

    原文:[全面解禁!真正的Expression Blend实战开发技巧]第八章 FluidMoveBehavior完全解析之一漂浮移动 好久没更新博客了,今天如果没急事,准备连发三篇,完全讲解Blend ...

  5. 【全面解禁!真正的Expression Blend实战开发技巧】第四章 从最常用ButtonStyle开始 - PathButton

    原文:[全面解禁!真正的Expression Blend实战开发技巧]第四章 从最常用ButtonStyle开始 - PathButton 上一篇我们介绍了TextButton,但为了追求界面的张力, ...

  6. 【全面解禁!真正的Expression Blend实战开发技巧】第五章 从最常用ButtonStyle开始 - ImageButton

    原文:[全面解禁!真正的Expression Blend实战开发技巧]第五章 从最常用ButtonStyle开始 - ImageButton 本章围绕ImageButton深入讨论,为什么是Image ...

  7. 【全面解禁!真正的Expression Blend实战开发技巧】第二章 你好,UI设计师

    原文:[全面解禁!真正的Expression Blend实战开发技巧]第二章 你好,UI设计师 你好,UI设计师 曾几何时我从没想过要与艺术家打交道,但是Silverlight改变了这一切.UI设计师 ...

  8. 【全面解禁!真正的Expression Blend实战开发技巧】第三章 从最常用ButtonStyle开始 - TextButton

    原文:[全面解禁!真正的Expression Blend实战开发技巧]第三章 从最常用ButtonStyle开始 - TextButton 在实际项目中,使用blend做的最多的一定是各种自定义But ...

  9. 【全面解禁!真正的Expression Blend实战开发技巧】第一章 真正的开发中的最佳的做法

    原文:[全面解禁!真正的Expression Blend实战开发技巧]第一章 真正的开发中的最佳的做法 从设计者到开发者 设计师创建一个应用程序的布局然后让开发者去实现. 从开发者到设计者 开发者创建 ...

随机推荐

  1. php自定义排序数组usort和uasort(uasort保持索引关联)(usort($arr, "cmp");)(比较函数时很普通函数的写法:function cmp($a, $b))

    php自定义排序数组usort和uasort(uasort保持索引关联)(usort($arr, "cmp");)(比较函数时很普通函数的写法:function cmp($a, $ ...

  2. 基于GTID多源复制扩展

    对一个运行很久的库做备份恢复建同步 不能使用xtrabackup   使用mysqldump导数据: mysqldump -S /data/mysql/3307/tmp/3307.sock --sin ...

  3. Java实现的并发任务处理实例

    本文实例讲述了Java实现的并发任务处理方法.分享给大家供大家参考,具体如下: public void init() { super.init(); this.ioThreadPool = new T ...

  4. DesignPattern_Java:SingletonPattern

    单例模式 SingletonPattern Ensure a class has only one instance,and provide a global point of access to i ...

  5. [Flow] Declare types for application

    In Flow, you can make global declarion about types. Run: flow init It will generate .flowconfig file ...

  6. cocos2d-x AnchorPoint锚点

    锚点是定位和变换操作的一个重点.锚点我们能够看成用一根图钉将一张纸或者相片钉在墙上的那个点. 节点的位置是由我们设置的position和anchor point一起决定的. 值得一提的是,anchor ...

  7. 写bug-free 的code

    一个算法题目 写的没有bug,是件不easy的事情 必需要考虑全面,事实上就是你算法过程中,每一个变量是否适用,你的算法是在什么样的前提以下展开的 这个和參数检查是另外一件事情.參数检查被说的好像是一 ...

  8. 语言的学习 —— 西班牙语(español)

    联合国六大官方语言:英语.法语.俄语.汉语.西班牙语.阿拉伯语: 在七大洲中,主要是在拉丁美洲国家中(巴西.伯利兹.法属圭亚那.海地等地除外).很多说西班牙语的人把他们的语言称为西班牙语(españo ...

  9. 在JS中var、let和const的区别

    var有变量提升 x = 4; // 变量 x 设置为 4 console.log(x)  //输出 4 var x; // 声明 x 上面代码相当于下面的 var x; // 声明 xx = 4;  ...

  10. 利用WPF建立自己的3d gis软件(非axhost方式)(八)拖动一个UI到地球上

    原文:利用WPF建立自己的3d gis软件(非axhost方式)(八)拖动一个UI到地球上 先下载SDK:https://pan.baidu.com/s/1M9kBS6ouUwLfrt0zV0bPew ...