Silverlight 3中的Behavior技术(三)

来源:互联网 发布:淘宝介入会打电话吗 编辑:程序博客网 时间:2024/05/01 12:52

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

 

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

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

 

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

 

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

 

 

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

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

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

 

 

未完,参考第四篇