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

     

  • 相关阅读:
    hadoop之 解析HDFS的写文件流程
    Linux之 手动释放内存
    Heka 的编译
    go get 下载需要的相关工具
    峰值计算的方法
    thrift简介
    Bazaar 版本控制工具
    Homebrew
    虚拟机下centos时间不正确的方便解决方法
    golang 应用的部署相关技术
  • 原文地址:https://www.cnblogs.com/alexis/p/1980188.html
Copyright © 2020-2023  润新知