Silverlight --- Behavior技术(三)

Silverlight 3中的Behavior技术(三)

从前面的介绍中我们可以知道,当我们设计好了Action或Behavior之后,其实不仅是设计师(Designer)可以使用,一般开发人员在撰写应用程序时,也可以将常用的功能封装成了Action或Behavior,让其他开发人员直接套用。

  我们在这边看一个简单的例子,从这个例子当中我们也来看如何设计Action。请参考底下这个画面:




  这是一个很典型的简单输入画面,使用者可以在TextBox中输入文字,但是,当用户点选TextBox的时候,得先把TextBox中的文字先清空后才能输入,体贴一点的程序,会在用户点选该TextBox时,就直接让该TextBox中的文字变成『选取』状态,这样使用者就可以直接输入了:


  当然,要达成这样的功能相当容易,只需要在TextBox的GotFocus事件中撰写『this.TextBox1.SelectAll();』即可。但是每一个TextBox都要这样写,显然很麻烦,如果可以跟刚才一样,把一个对象(Component)直接拖曳到TextBox上,该TextBox就自动具有此功能,岂不挺好?


  是的,我们紧接着就来看如何设计这样的Action。


  请先建立一个Silverlight项目(当然您也可以在现有的Silverlight项目中直接建立Action或Behavior类别,不过为Action或Behavior建立一个独立的项目是比较理想的选择),该项目请选择『Silverlight
Class Library』即可,接着,请在该项目中建立一个Action类别,当您在项目中选择Add New Item时,可以找到Blend分类下的Action
Template,我们建立一个名称为『TextBoxAutoSelectAction』的Action,你会发现建立出来的类别如下:

    1. public class TextBoxAutoSelectAction : TriggerAction<DependencyObject> 

    2.     public TextBoxAutoSelectAction() 
    3.     { 
    4.         // Insert code required on object creation below this point. 
    5.     } 
    6.     protected override void Invoke(object o) 
    7.     { 
    8.         // Insert code that defines what the Action will do when triggered/invoked. 
    9.     } 

  请将TriggerAction调整成TargetedTriggerAction,并将改为<TextBox >。

  TargetedTriggerAction是一个泛型类别,其中的则可设定为我们默认的目标对象。例如,我们现在设计的这个TextBoxAction主要的使用对象是TextBox,因此我们可以写成『TargetedTriggerAction』。而继承TargetedTriggerAction这个类别必须要实作Invoke方法,Invoke方法是该Action被触发时,要执行的动作。


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

posted on 2012-10-29 10:38  雪影  阅读(197)  评论(0编辑  收藏  举报

导航