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

     

  • 相关阅读:
    细心也是一种态度
    EDM数据访问的三种方式
    如何快速提交网站备案 ICP备案
    c# winform 关于给静态全局变量赋值的问题
    c#DIY随机数类winform 2010
    手把手教你如何用IIS搭建手机WAP网站(图文)
    admin密码对应的MD5值,16位和32位,admin解密自己留着方便.
    C#实现MD5加密,winform c#2005
    最全的c#日期函数 winform
    如何解决因网站备案号没下来而网站被迫关闭的办法
  • 原文地址:https://www.cnblogs.com/alexis/p/1980188.html
Copyright © 2011-2022 走看看