惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
F
Full Disclosure
月光博客
月光博客
MongoDB | Blog
MongoDB | Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
T
Tailwind CSS Blog
Microsoft Security Blog
Microsoft Security Blog
N
Netflix TechBlog - Medium
The Register - Security
The Register - Security
aimingoo的专栏
aimingoo的专栏
The GitHub Blog
The GitHub Blog
D
Docker
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
I
InfoQ
腾讯CDC
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
K
Kaspersky official blog
Hugging Face - Blog
Hugging Face - Blog
D
DataBreaches.Net
P
Proofpoint News Feed
Cisco Talos Blog
Cisco Talos Blog
NISL@THU
NISL@THU
有赞技术团队
有赞技术团队
P
Proofpoint News Feed
美团技术团队
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Martin Fowler
Martin Fowler
L
Lohrmann on Cybersecurity
Know Your Adversary
Know Your Adversary
Simon Willison's Weblog
Simon Willison's Weblog
S
Securelist
T
Threatpost
云风的 BLOG
云风的 BLOG
G
Google Developers Blog
L
LangChain Blog
Blog — PlanetScale
Blog — PlanetScale
Recorded Future
Recorded Future
C
Cisco Blogs
S
SegmentFault 最新的问题
Cyberwarzone
Cyberwarzone
GbyAI
GbyAI
IT之家
IT之家
S
Schneier on Security
L
LINUX DO - 热门话题
T
Tenable Blog
T
The Exploit Database - CXSecurity.com
MyScale Blog
MyScale Blog
P
Privacy & Cybersecurity Law Blog
Google Online Security Blog
Google Online Security Blog
T
Threat Research - Cisco Blogs

博客园 - 雪影

C#异步提示和技巧 关于System.Windows.Forms.DateTimePicker的一个Bug 关于frameset中指定区域回退的实现 如何编写出拥抱变化的代码? WCF RIA Services Domain Serive的生命周期和数据交互 [译]WCF RIA Services中的集合(2) [译]WCF RIA Services中的集合(1) windows8应用安装挂起的一个原因 WPF 详解模板 Silverlight --- Behavior技术(四) Silverlight --- Behavior技术(三) Silverlight --- Behavior技术(一) Silverlight的依赖属性与附加属性(六) Silverlight的依赖属性与附加属性(五) Silverlight的依赖属性与附加属性(四) Silverlight的依赖属性与附加属性(三) Silverlight的依赖属性与附加属性(二) Silverlight的依赖属性与附加属性(一) 从数据库读取图片,并固定显示
Silverlight --- Behavior技术(二)
雪影 · 2012-10-29 · via 博客园 - 雪影

Silverlight 3中的Behavior技术(二)

     OK,说了这么多,我们还是先来看看该怎么在开发环境当中使用Behavior技术。当然,就单纯的Silverlight开发人员(不管是Designer或是Developer)来说,开发环境安装好Blend
3是最低的要求,同时当您安装了Silverlight 3 SDK以及Blend 3 SDK、Silverlight 3
Toolkit等套件之后,您可以直接在Blend 3当中建立一个Silverlight应用程序,接着在场景中布置一个Button和一个TextBlock,并且随意设计一个动画。  接着,请切换到Assets页标签,若您有正确的安装Blend 3 SDK,您会看到Assets页卷标下有Behaviors选项,在列出的项目中,你会看到有一个ControlStoryboardAction:  


  请点选它并拖曳到Button上,然后切换到Object and
Timeline页标签,您会发现Button控件底下多了个ControlStoryboardAction对象:

   接着点选该对象,切换到属性窗口,您接着会发现,可以透过开发环境来设定ControlStoryboardAction对象的属性(请注意不是Button的属性,别点错):

   完成之后,请先建置(Build)此应用程序,成功后请接着执行此应用程序,您会发现在不需要写任何程序代码的状况下,当使用者按下Button1(也就是Button1的Click事件触发后),Storyboard动画就自动被播放了。

  如果您仔细观察Action的设定窗口,会发现其实场景中任何控件(不只是Button)的任何事件(不只是Click)都可以做为特定Action的触发条件。而每一个Actionr都代表着一种行为,而程序设计人员(developer)可以设计出各式各样的Action,让设计师(Designer)直接使用。

  那Trigger、Action、Behavior三者之间究竟有何关系呢?

  从上面的操作中我们可以知道,Action是经过程序设计师封装好的某种行为(功能),我们可以把一些常用的代码段,例如上面用到的『动画拨放』、或是先前我们提过的『发一封信』、或『将窗体上的数据存入数据库』…等『功能』整理成一个个的Action,而开发人员只需要把Action拖曳到特定的对象上即可使用。

  当然,拖曳到目标对象上之后,还得要设定这个Action的相关信息,也就是该Action的属性(如果有的话),以及该Action被触发的时机,而这就是所谓的Trigger了。

  在Silverlight中,预设的Trigger有底下几种:

  1. EventTrigger:最常用的触发器,可选择在控件的特定事件发生时触发,例如Loaded、MouseLeftButtonDown、GotFocus…等。

  2. TimerTrigger:可设定每n毫秒触发一次,总共要触发几次或随时间持续触发。

  3. KeyTrigger:可设定在特定按键被按下时触发,可捕捉到键盘上的一般按键与功能键,亦可抓取Ctrl, Alt等组合控制键。

  4. StoryboardCompletedTrigger:在特定动画拨放完毕后触发。

  请注意,这些Trigger是配合着Action使用的,你会发现,每一个Action都可以透过Blend设定Trigger,并透过Trigger来触发执行此Action,如此一来,我们就可以相当灵活的在场景中特定控件的特定事件发生时,来执行特定工作。

  也就是说,在这个机制下,只要程序设计师预先写好Trigger与Action,Designer就可以在完全不撰写任何程序代码的状况下,来开发出一个Silverlight应用系统或网站。

  我们刚才提到了Action与Trigger,那Behavior呢?难道Behavior不需要Trigger吗?其实不是的,应该说,Behavior是内建(包含)了Trigger!!!

  你会发现当场景中的某一个对象被套用了Behavior之后,不需要设定任何Trigger,该对象就会自动拥有某种功能,就好像我们刚才介绍了的MouseDragElementBehavior一样,当该Behavior套用在某个对象上,该对象就直接支持拖曳行为了,因此,你可以将Behavior直接想象成Trigeer与Action的结合。

  我们先谈到这边,下一篇则要来介绍Action的开发方式...

  本文来自dotnetWalker的博客,原文地址:http://blog.csdn.net/dotnetwalker/article/details/5438773