微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

创建自定义行为并在Silverlight项目中使用2

前言

因为某个敏感词,一直不想用这个标题,但为了文章的连续性,我就2一回吧,呵呵。

首先,我们来补一上文《创建自定义行为并在Silverlight项目中使用》 中一开始说的在Expression Blend中调用创建的自定义行为,上文只是在Visual Studio中以代码的形式实现了。

打开Silverlight项目【注意:如果你创建的Behaviors是Silverlight的,则只能在Silverlight项目中使用,WPF同样道理】,添加自定义行为的引用,如下图

 

添加完引用后,需要重新编译下项目,以使行为添加到当前的项目中。编译完后,我们打开资产(Asset)面板,会发现自己创建的MyBehavior出现了

我们向美化板中拖一个TextBox以应用MyBehavior,将MyBehavior拖到TextBox上,如下图

导航到属性面板,我们可以设置字体的Foreground为红色或者其他笔刷,运行程序,我们同样的运行结果

本文将讲解TriggerAction及其相关的知识。

什么是TriggerAction?

从字面上就能知道是定义触发器的动作的,这是MSDN解释:

 Describes an action to perform for a trigger

 

在编写继承自TriggerAction的类时,我们不需要像Behavior那样,在OnAttached方法注册事件,在OnDetaching方法移除事件。TriggerAction假设你想要获取一个事件,需要你做的就是提供一个Invoke方法,该方法将会在事件被触发时被调用

为了让大家更好的理解这个,我们可以查看Expression Blend自带的一些行为的源代码【Expression Blend自带的行为都存在Microsoft.Expression.Interactions.dll中】

我们看一个继承自TriggerAction的比较简单的类---HyperlinkAction,它的类图图下

可以看到它有两个依赖属性一个Invoke方法,下面我们来看下在Invoke方法中做了些什么事情

在Invoke方法中写了导航的操作,我们再到Expression Blend中操作下,向Button中添加HyperlinkAction,它的属性面板如下,包含触发器、触发条件以及HyperlinkAction自带属性(在代码中定义的):NavigationUri和Targetwindow【认为_self】

至于触发器和触发条件都是继承自TriggerAction的,下图是TriggerAction的类图

可以看到TriggerAction类有Invoke方法,也有像Behavior类中的OnAttached方法和OnDetaching方法。以下一张图能更好的说明Expression Blend中认的事件为Click

本文就不以具体的Demo再写一个继承成TriggerAction的行为了,大家可以参考HyperlinkAction即可,另源代码中有上述涉及到的代码

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐