设为首页 收藏本站
查看: 1008|回复: 0

Windows Phone 7 添加按钮的VSM状态分组

[复制链接]
YunVN网友  发表于 2015-5-9 15:40:44 |阅读模式
  什么是VSM(Visual State Manager)? 大家可以参加jv9的这两篇博客:

Expression Blend实例中文教程(11) - 视觉管理器快速入门Visual State Manager(VSM)  

Expression Blend实例中文教程(12) - 样式和模板快速入门Style,Template本文是讲如何在VSM中新增自定义的状态分组.为什么要新增分组呢?默认的不是很全了嘛,有些人可能会这样问。  在WPF/Silverlight中,以button为例,会将一些互相排斥(即不会同时发生)的State分到同一组里面,如Focus和UnFocus都归于FocusStates组,而Pressed、Normal、Disabled和MouseOver都归于CommonStates,那么不同组之间的状态可以同时发生么,当然是肯定的。因为一个button可能出于Pressed,并且Focus的状态,那么如果我们想增加这样的状态,并且想要button被点击的时候达到这个状态,what should we do with Blend ? just follow me DSC0000.gif
  新建一个WP7的项目,拖入一个按钮,命名为btnPress,修改Content属性为Press Me,右击btnPress,选择Edit Template--> Edit a Copy如下图
DSC0001.png
  命名Style为btnPressStyle,点击ok
DSC0002.png
  找到States选项卡(如果没有,可以点击菜单栏Windows-->States打开),选择Add State Group,进行添加状态组

DSC0003.png
  将新添加的Group命名为FocusPressStates,选择Add State进行添加状态,这里我新增两个状态:PressFocused、UnPressFocused

DSC0004.png
  选择PressFocused,会发现美化板周围出现了红色边框(是不是很熟悉呢,对,我们在录制动画的时候也是出现红色边框),将背景颜色改为红色,如下图
DSC0005.png
  推出模板编辑,你是不是迫不及待想要看看点击后的效果呢?
  结果很Disappointed,无论你如何用力点击Press Me,Nothing Hanppened!
  Wait,你会想,它(指XAML代码)如果知道我是什么时候到达这个状态呢,我还没设置呢! 是的,我们这里还没设置,这里有两种方法进行状态设定。我们先以编码的方式实现。
  我们想要在点击按钮的时候让按钮到达PressFocused状态,我们可以在Click事件中,使用如下代码
DSC0006.png
  现在再按F5,就会发现,按钮的背景色变掉了。

  但是,如果对于每个想要这样状态的按钮,都要写这么一句话么?有什么简便的、不用coding的方式实现呢? 有,Expression Blend中提供了一个名为GoToStateAction的Behavior,我们可以使用它来实现。

DSC0007.png
  将GoToStateAction拖到btnPress上,设置其触发事件和到达状态(在拖之前,我们先build一下项目)

DSC0008.png
  我们现在将Click事件中的代码注释掉,然后再按F5,运行程序,会发现跟写代码的效果是一样的。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-65320-1-1.html 上篇帖子: windows 7下 IE8报脚本错误 下篇帖子: Windows Phone 7 Perst嵌入式数据库的学习
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表