English Version: http://dflying.dflying.net/1/archive/120_build_your_own_behaviors_in_aspnet_atlas.html

Atlas中的Behavior定义了当控件的某个事件被触发时的行为。Behavior可以看作是一种封装了的DHTML的事件,例如click和hover等。Behavior同样可以是一个组件,可被attach到某个Atlas客户端控件上,以提供这个Atlas客户端控件更高级,更丰富的功能,例如一些复杂的拖放(drag & drop),自动完成,浮动等功能。Behavior将被定义在某个Atlas控件的behaviors集合中。

从Atlas文档以及源文件中,我们可以知道Atlas有如下一些内建的Behavior:

  1. Click Behavior:提供对鼠标点击的处理。
  2. Floating Behavior:提供拖放(drag & drop)的效果。
  3. Hover Behavior:提供对DHTML的事件onmouseover,onmouseout,onfocus以及onblur的处理。
  4. Pop-up Component:提供pop-up的功能,可以用来实现高级的tooltip。
  5. Auto-complete Behavior:提供自动完成的功能。这也是Atlas演示中常用的功能之一。这个Behavior还需要服务器端的处理程序。

Click Behavior用来处理DHTML的onclick事件,非常有用但是它提供的功能有些简单。在一些比较复杂的程序中,我们可能需要将左右键的功能分开,例如,左键用来选择,右键用来弹出快捷菜单。虽然我们可以把这个if-else放在Click Behavior的处理函数中,但这并不是好的Atlas的方法。因此,今天我们来编写一个更加强大的Click Behavior,叫做ExtendedClickBehavior,它可以在Behavior的内部就把左右键分开,并且引发出两个不同的事件。通过编写这个ExtendedClickBehavior,您也可以了解在Atlas中创建自定义的Behavior的一般过程。

通常的,创建自定义的Behavior有如下5个步骤:

  1. 继承于Sys.UI.Behavior基类。
  2. 定义您自己的事件以封装DHTML中的事件。这些事件将被用来暴露给其他的Atlas控件以代替原有的,未经修饰的DHTML事件。
  3. 在Behavior的构造函数中为您的事件指定处理函数,并在析构函数中detach事件的处理函数。
  4. 在处理函数中发出相应的事件。在ExtendedClickBehavior的例子中,我们根据鼠标按键的不同来发出不同的事件。
  5. 在getDescriptor()方法中加上对您定义的事件的描述。

下面是ExtendedClickBehavior的JavaScript代码。上述五个步骤在代码内以注释的形式标出。将下面的代码保存为ExtendedClickBehavior.js。

Sys.TypeDescriptor.addType('script', 'extendedClickBehavior', Sys.UI.ExtendedClickBehavior);

让我们在页面中测试一下这个ExtendedClickBehavior。在页面上添加一个<div>用来点击,一个label用来显示点击的信息。下面是ASPX文件中的HTML定义。不要忘记在ScriptManager中添加对ExtendedClickBehavior.js文件的引用。

在ASP.NET Atlas中创建自定义的Behavior<atlas:ScriptManager EnablePartialRendering="true" ID="ScriptManager1" runat="server">
>

下面是Atlas脚本定义。注意到我们使用了Atlas的setProperty Action(有关Atlas Action,请见后续文章)用来在每次点击后设置label的text。

在ASP.NET Atlas中创建自定义的Behavior<page xmlns:script="http://schemas.microsoft.com/xml-script/2005">
在ASP.NET Atlas中创建自定义的Behavior    
<components>
在ASP.NET Atlas中创建自定义的Behavior        
<label id="myButton">
在ASP.NET Atlas中创建自定义的Behavior            
<behaviors>
在ASP.NET Atlas中创建自定义的Behavior                
<extendedClickBehavior>
在ASP.NET Atlas中创建自定义的Behavior                    
<click>
在ASP.NET Atlas中创建自定义的Behavior                        
<setProperty target="myLabel" property="text" value="clicked" />
在ASP.NET Atlas中创建自定义的Behavior                    
</click>
在ASP.NET Atlas中创建自定义的Behavior                    
<leftClick>
在ASP.NET Atlas中创建自定义的Behavior                        
<setProperty target="myLabel" property="text" value="left clicked" />
在ASP.NET Atlas中创建自定义的Behavior                    
</leftClick>
在ASP.NET Atlas中创建自定义的Behavior                    
<rightClick>
在ASP.NET Atlas中创建自定义的Behavior                        
<setProperty target="myLabel" property="text" value="right clicked" />
在ASP.NET Atlas中创建自定义的Behavior                    
</rightClick>   
在ASP.NET Atlas中创建自定义的Behavior                
</extendedClickBehavior> 
在ASP.NET Atlas中创建自定义的Behavior            
</behaviors>
在ASP.NET Atlas中创建自定义的Behavior        
</label>
在ASP.NET Atlas中创建自定义的Behavior        
<label id="myLabel" />
在ASP.NET Atlas中创建自定义的Behavior    
</components>
在ASP.NET Atlas中创建自定义的Behavior
</page>

 

浏览器中的运行结果:

没有点击:
在ASP.NET Atlas中创建自定义的Behavior

左键点击:
在ASP.NET Atlas中创建自定义的Behavior

右键点击:
在ASP.NET Atlas中创建自定义的Behavior

上述示例程序可以在此下载:https://files.cnblogs.com/dflying/ExtendedClickBehaviorDemo.zip

相关文章:

  • 2021-12-28
  • 2022-01-24
  • 2022-12-23
  • 2022-12-23
  • 2020-07-26
  • 2019-07-25
  • 2022-12-23
猜你喜欢
  • 2021-07-26
  • 2022-02-10
  • 2021-08-29
  • 2022-01-20
  • 2021-07-30
  • 2021-08-12
  • 2021-11-24
相关资源
相似解决方案