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,你会发现建立出来的类别如下:
- public class TextBoxAutoSelectAction : TriggerAction<DependencyObject>
- {
- public TextBoxAutoSelectAction()
- {
- // Insert code required on object creation below this point.
- }
- protected override void Invoke(object o)
- {
- // Insert code that defines what the Action will do when triggered/invoked.
- }
- }
请将TriggerAction调整成TargetedTriggerAction,并将
改为<TextBox >。 TargetedTriggerAction是一个泛型类别,其中的
则可设定为我们默认的目标对象。例如,我们现在设计的这个TextBoxAction主要的使用对象是TextBox,因此我们可以写成『TargetedTriggerAction 』。而继承TargetedTriggerAction这个类别必须要实作Invoke方法,Invoke方法是该Action被触发时,要执行的动作。
本文来自dotnetWalker的博客,原文地址:http://blog.csdn.net/dotnetWalker/article/details/5438795