Silverlight拖放功能相关应用技巧分享
创始人
2024-06-18 18:10:34
0

Silverlight工具是一个非常有用的开发工具。可以帮助开发人员轻松实现基于多媒体播放操作等功能。在实际使用中,我们会体会到其强大的功能特定。在这里就先来了解其中Silverlight拖放功能的作用。#t#

在Silverlight拖放功能的实现中,分为三个步骤:

1.按下鼠标,触发MouseLeftButtonDown事件,选择要拖动的对象。

2.移动鼠标,触发MouseMove事件,移动选择的对象。

3.放开鼠标,触发MouseLeftButtonUp事件,停止捕捉事件。

做一个简单的界面,用一个按钮来显示Silverlight拖放功能,如下XAML声明:

  1. < Canvas Background="#46461F"> 
  2. < Button   
  3. MouseLeftButtonDown="OnMouseDown"   
  4. MouseMove="OnMouseMove" 
  5. MouseLeftButtonUp="OnMouseUp"   
  6. Canvas.Left="50" Canvas.Top="50"
     Background="Red" 
  7. FontSize="18" 
  8. Width="160" Height="80"> 
  9. < Button.Content> 
  10. < StackPanel Orientation=
    "Horizontal" HorizontalAlignment
    ="Center" 
  11. VerticalAlignment="Center"> 
  12. < Image Source="smile_6.png">< /Image> 
  13. < TextBlock Text="拖动我" 
    VerticalAlignment="Center"
     Margin="10">< /TextBlock> 
  14. < /StackPanel> 
  15. < /Button.Content> 
  16. < /Button> 
  17. < /Canvas> 

这里为了界面显示效果,使用了控件模板,后续会专门讲到。

Silverlight拖放功能之开始拖放操作

开始拖放操作,实现MouseLeftButtonDown事件处理程序,用两个全局变量来记录当前鼠标的位置和鼠标是否保持移动。

 

  1. bool trackingMouseMove = false;  
  2. Point mousePosition;  
  3. void OnMouseDown(object sender, 
    MouseButtonEventArgs e)  
  4. {  
  5. FrameworkElement element = sender 
    as FrameworkElement;  
  6. mousePosition = e.GetPosition(null);  
  7. trackingMouseMove = true;  
  8. if (null != element)  
  9. {  
  10. element.CaptureMouse();  
  11. element.Cursor = Cursors.Hand;  
  12. }  

Silverlight拖放功能之移动对象

移动对象,实现MouseMove事件处理程序,计算元素的位置并更新,同时更新鼠标的位置。

 

  1. void OnMouseMove(object sender, 
    MouseEventArgs e)  
  2. {  
  3. FrameworkElement element = 
    sender as FrameworkElement;  
  4. if (trackingMouseMove)  
  5. {  
  6. double deltaV = e.GetPosition(null).
    Y - mousePosition.Y;  
  7. double deltaH = e.GetPosition(null).
    X - mousePosition.X;  
  8. double newTop = deltaV + (double)
    element.GetValue(Canvas.TopProperty);  
  9. double newLeft = deltaH + (double)
    element.GetValue(Canvas.LeftProperty);  
  10. element.SetValue(Canvas.TopProperty, newTop);  
  11. element.SetValue(Canvas.LeftProperty, newLeft);  
  12. mousePosition = e.GetPosition(null);  
  13. }  

Silverlight拖放功能之完成拖放操作

完成拖放操作,实现MouseLeftButtonUp事件处理程序。

 

  1. void OnMouseUp(object sender, 
    MouseButtonEventArgs e)  
  2. {  
  3. FrameworkElement element = 
    sender as FrameworkElement;  
  4. trackingMouseMove = false;  
  5. element.ReleaseMouseCapture();  
  6. mousePositionmousePosition.X = 
    mousePosition.Y = 0;  
  7. element.Cursor = null;  

 

相关内容

热门资讯

如何允许远程连接到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 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...