• 创建自定义行为并在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即可,另源代码中有上述涉及到的代码

     

  • 相关阅读:
    JS 这一次彻底理解选择排序
    JS 这一次彻底理解冒泡排序
    JS script脚本async和defer的区别
    精读JavaScript模式(九),JS类式继承与现代继承模式其二
    google recaptcha 谷歌人机身份验证超详细使用教程,前端/后端集成说明
    JS 究竟是先有鸡还是有蛋,Object与Function究竟谁出现的更早,Function算不算Function的实例等问题杂谈
    NetFramework 专栏总集篇
    详解 服务发现 的基本实现
    CF150E Freezing with Style(点分治)
    LOJ6032.「雅礼集训 2017 Day2」水箱
  • 原文地址:https://www.cnblogs.com/alexis/p/1980188.html
Copyright © 2020-2023  润新知