Silverlight 2完美征程学习笔记

拖拽效果分为3个步骤

  1. 按下鼠标,触发MouseLeftButtonDown事件,选择要拖动的对象
  2. 移动鼠标,触发MouseMove事件,移动选择的对象
  3. 放开鼠标,触发MouseLeftButtonUp事件,停止捕捉事件

页面代码:

<UserControl x:Class="SilverlightStuding.MouseDrag"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Width="400" Height="300"><Canvas><StackPanel MouseLeftButtonDown="StackPanel_MouseLeftButtonDown" MouseMove="StackPanel_MouseMove" MouseLeftButtonUp="StackPanel_MouseLeftButtonUp" Canvas.Left="50" Canvas.Top="50" Width="200" Height="80"><Border BorderThickness="3" BorderBrush="Red"><StackPanel Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Center"><Image Source="drag.png"/><TextBlock Text="Drag Me" VerticalAlignment="Center" Margin="10"></TextBlock></StackPanel></Border></StackPanel><TextBlock Text="" x:Name="txtStatus" Canvas.Top="200" Canvas.Left="60"></TextBlock></Canvas>
</UserControl>

开始拖放操作,实现MouseLeftButtonDown事件的处理

        private void StackPanel_MouseLeftButtonDown(object sender, MouseButtonEventArgs e){FrameworkElement element = sender as FrameworkElement;mousePosition = e.GetPosition(null);trackingMouseMove = true;if(null!=element){element.CaptureMouse();element.Cursor = Cursors.Hand;}txtStatus.Text = "MouseLeftButtonDown";}

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

        private void StackPanel_MouseMove(object sender, MouseEventArgs e){FrameworkElement element = sender as FrameworkElement;if(trackingMouseMove){double deltaV = e.GetPosition(null).Y - mousePosition.Y;double deltaH = e.GetPosition(null).X - mousePosition.X;double newTop = deltaV + (double) element.GetValue(Canvas.TopProperty);double newLeft = deltaH + (double) element.GetValue(Canvas.LeftProperty);element.SetValue(Canvas.TopProperty, newTop);element.SetValue(Canvas.LeftProperty, newLeft);mousePosition = e.GetPosition(null);}txtStatus.Text = "Mouse Moving ……";}

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

        private void StackPanel_MouseLeftButtonUp(object sender, MouseButtonEventArgs e){FrameworkElement element = sender as FrameworkElement;trackingMouseMove = false;element.ReleaseMouseCapture();mousePosition.X = mousePosition.Y = 0;element.Cursor = null;txtStatus.Text = "ReleaseMouse";}

转载于:https://www.cnblogs.com/dupeng0811/archive/2010/03/31/1701539.html

Silverlight实例开发 简单的拖拽效果相关推荐

  1. 一个用在手机上的简单js拖拽效果

    http://blog.163.com/xiaoyou_000/blog/static/65067392201521664214534/ http://www.17sucai.com/pins/876 ...

  2. html拖拽开发,H5Web前端开发_实现拖拽效果

    /p> < h5等前端开发人员:页面开发 text-align: center; } .top { text-align: center; } .top img { margin: 30p ...

  3. h5物体拖动_html5实现拖拽效果

    在此之前,实现拖拽操作都是开发人员自定义逻辑实现的,但是HTML5提供了拖拽API ,使得拖拽操作的实现变得简单. fish.gif 拖拽 #div1 { width: 100px; height: ...

  4. html拖拽模态框,bootstrap模态框实现拖拽效果

    本文实例为大家分享了bootstrap模态框实现拖拽效果,供大家参考,具体内容如下 项目中用的有点乱,jquery和angularjs一起搞,有些插件用的jquery版本的,有的插件用的ng版本的.搞 ...

  5. React.js实现原生js拖拽效果及思考

    一.起因&思路 不知不觉,已经好几天没写博客了...近来除了研究React,还做了公司官网... 一直想写一个原生js拖拽效果,又加上近来学react学得比较嗨.所以就用react来实现这个拖 ...

  6. 原生拖拽太拉跨了,纯JS自己手写一个拖拽效果,纵享丝滑

    前言 提到元素拖拽,通常都会先想到用 HTML5 的拖拽放置 (Drag 和 Drop) 来实现,它提供了一套完整的事件机制,看起来似乎是首选的解决方案,但实际却不是那么美好,主要是它的样式太过简陋, ...

  7. 在 Element-UI 的 Table 组件上添加列拖拽效果

    在 Element-UI 的 Table 组件上添加列拖拽效果 一.数据驱动 传统的拖动效果,都是基于通过 mousedown.mousemove.mouseup 事件来修改删减 dom 节点 但 V ...

  8. html设置图片不可拖拽,js css3实现图片拖拽效果

    本文实例为大家分享了css3实现图片拖拽效果的具体代码,供大家参考,具体内容如下 body{ text-align: center; } .container{ display: flex; just ...

  9. html js点击字图片下拉,JavaScript实现文字与图片拖拽效果的方法

    本文实例讲述了JavaScript实现文字与图片拖拽效果的方法.分享给大家供大家参考.具体实现方法如下: JavaScript实现文字与图片的拖拽效果 *{padding:0;margin:0;} . ...

  10. html5 原生拖拽,原生JS实现拖拽效果

    这篇文章主要为大家详细介绍了原生JS实现拖拽效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 本文实例为大家分享了JS实现拖拽效果的具体代码,供大家参考,具体内容如下 ...

最新文章

  1. 基于深度学习方法的3D数据合成
  2. Apache httpd设置HTTPS双向认证
  3. 数学建模matlab imread,《matlab数学建模方法与实践》第三章 数据的处理
  4. 各种基本的排序算法在Object-C实现
  5. 【工具使用系列】关于 MATLAB 反馈神经网络,你需要知道的事
  6. 什么是并发与并行?有另类举例,适用于新手
  7. from表单的重置按钮(reset)不能重置隐藏input框的值
  8. word使文字垂直居中
  9. Android识别图片坐标,Android 取到ImageView背景图片中某处的相对坐标
  10. 高德地图的测试key_获取高德地图key
  11. PCB设计中基板颜色含义
  12. python tkinter教程 博客园_布同:如何循序渐进学习Python语言
  13. 如何浏览自己的新浪微博图床
  14. WPF开发人员必读:WPF控件测试台
  15. H5 VIDEO标签视频黑屏的原因及解决方法
  16. Basics Algorithms| 岭回归(Ridge regression)
  17. 六款在线项目管理工具
  18. Kylin快速入门系列(6) | 如何通过Zepplin来访问Kylin服务
  19. 计算机考试半角全角,全角和半角怎么切换?是什么意思?全角半角的区别
  20. nest使用cloudbase(tcb)进行serverless开发

热门文章

  1. 批处理(bat)choice命令详解
  2. SqlServer得到生日(闰月考虑)
  3. 30. 确保目标空间足够大
  4. copy linux file to mac,Mac Linux互相传递文件
  5. mysql 流浪,流浪汉机器 – 如何找出mysql用户名/密码
  6. mysql 防火墙 centos_CentOS 开启防火墙 firewall ,mysql 远程访问
  7. linux 6.8 多网卡绑定,Linux6.1/6.5 双网卡绑定
  8. mysql学籍表设计_MySQL基础-学生管理系统数据库设计
  9. 12. Django基础:模型层及ORM
  10. Go语言:交换两个整型变量的值