Silverlight鼠标滚动事件全方位解读
创始人
2024-06-19 04:41:29
0

Silverlight的出现,给我们带来了一个全新的程序编写环境。其在音频视频方面的处理是相当强大的。展示一个Silverlight鼠标滚动事件的示例只需要几行代码即可,我认为大部分人都可以在几分钟内做好,并理解它是如何工作的。因此我决定将这个事件和Expression Blend中引入的新行为一起合并成一个例子进行介绍,本文主要介绍如何创建行为,如何使用鼠标滚动事件,以及如何将其添加到可滚动的控件上,以便使用鼠标滚轮。#t#

Silverlight鼠标滚动事件的行为是什么?

你可能曾经在ASP.NET Ajax框架中使用过行为,说得简单点这里的行为就是ASP.NET Ajax语法的Silverlight实现,允许创建可复用的和可连接到HTML控件的行为。(让Silverlight 3操作简单的和手工具)

从Blend 3 Beta版开始引入行为的概念,可以在设计窗口中拖动内置的行为,增加图形元素的活力,进入Asset文件夹,在这里可以找到控件、效果、资源和其它东西,现在又多了一个行为卡片。

Expression Blend 3.0 引入了许多行为类型,行为< T>是其中最简单的了,适用于DependencyObject,行为可以修改控件的外观,添加元素,修改属性或处理一个或多个事件。MouseDragElementBehavior就是一个活生生的例子,它连接鼠标事件,让元素可以在页面中拖动。

编写一个Silverlight鼠标滚动事件的行为

编写一个行为是一件很简单的事情,行为是行为< T>的类扩展,因此首先要做的是引用C:\Program Files\Microsoft SDKs\Expression\Blend 3\Interactivity\Libraries\Silverlight目录下的Microsoft.Expression.Interactions.dll和System.Windows.Interactivity.dll。如果你从Blend 3.0添加一个现有的行为,那这些动态库会自动引用到项目中。

引用添加好后,就可以创建类了:

 

  1. public class MouseWheel
    ScrollBehavior : Behavior
  2. < Control>   
  3. {  
  4. // 在这里添加实现代码  

 

由于我们是要扩展Silverlight中可滚动的组件,我们需要创建一个可以连接到Control类的类型,在Silverlight中没有通用的用于可滚动组件(如ScrollViewer、DataGrid和DataGrid)的类,这就需要自己想办法处理才行,我们将在后面进行介绍,目前先分析一下如何创建一个行为。(微软Silverlight中加入Smooth Streaming)

接下来要做的是在目标对象上连接MouseWheel事件,当我们完成行为类的扩展后,我们有两个办法来处理连接和释放目标上的行为:将行为连接到对象上时调用OnAttached,释放对象上的行为时使用OnDetaching。OnAttached和OnDetaching是连接和释放公共事件的理想选择,目标对象是通过行为< T>在AssociatedObject属性上暴露的,下面是我的代码示例:

 

  1. /// < summary>   
  2. /// Called after the behavior is 
    attached to an AssociatedObject.  
  3. /// < /summary> 
  4. /// < remarks>Override this to 
    hook up functionality to the 
    AssociatedObject.< /remarks> 
  5. protected override void OnAttached()  
  6. {  
  7. this.AssociatedObject.MouseWheel 
    += new MouseWheelEventHandler
    (AssociatedObject_MouseWheel);  
  8. base.OnAttached();  
  9. }  
  10. /// < summary> 
  11. /// Called when the behavior is 
    being detached from its Associated
    Object, but before it has actually 
    occurred.  
  12. /// < /summary> 
  13. /// < remarks>Override this to unhook 
    functionality from the AssociatedObject.
  14. < /remarks> 
  15. protected override void OnDetaching()  
  16. {  
  17. this.AssociatedObject.MouseWheel -= 
    new MouseWheelEventHandler
    (AssociatedObject_MouseWheel);  
  18. base.OnDetaching();  

 

Silverlight鼠标滚动事件的行为创建就为大家介绍到这里。

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...