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

创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站设计、做网站、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的资中网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
在Silverlight拖放功能的实现中,分为三个步骤:
1.按下鼠标,触发MouseLeftButtonDown事件,选择要拖动的对象。
2.移动鼠标,触发MouseMove事件,移动选择的对象。
3.放开鼠标,触发MouseLeftButtonUp事件,停止捕捉事件。
做一个简单的界面,用一个按钮来显示Silverlight拖放功能,如下XAML声明:
- < Canvas Background="#46461F">
 - < Button
 - MouseLeftButtonDown="OnMouseDown"
 - MouseMove="OnMouseMove"
 - MouseLeftButtonUp="OnMouseUp"
 - Canvas.Left="50" Canvas.Top="50"
 
Background="Red"- FontSize="18"
 - Width="160" Height="80">
 - < Button.Content>
 - < StackPanel Orientation=
 
"Horizontal" HorizontalAlignment
="Center"- VerticalAlignment="Center">
 - < Image Source="smile_6.png">< /Image>
 - < TextBlock Text="拖动我"
 
VerticalAlignment="Center"
Margin="10">< /TextBlock>- < /StackPanel>
 - < /Button.Content>
 - < /Button>
 - < /Canvas>
 
这里为了界面显示效果,使用了控件模板,后续会专门讲到。
Silverlight拖放功能之开始拖放操作
开始拖放操作,实现MouseLeftButtonDown事件处理程序,用两个全局变量来记录当前鼠标的位置和鼠标是否保持移动。
- bool trackingMouseMove = false;
 - Point mousePosition;
 - void OnMouseDown(object sender,
 
MouseButtonEventArgs e)- {
 - FrameworkElement element = sender
 
as FrameworkElement;- mousePosition = e.GetPosition(null);
 - trackingMouseMove = true;
 - if (null != element)
 - {
 - element.CaptureMouse();
 - element.Cursor = Cursors.Hand;
 - }
 - }
 
Silverlight拖放功能之移动对象
移动对象,实现MouseMove事件处理程序,计算元素的位置并更新,同时更新鼠标的位置。
- void OnMouseMove(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);
 - }
 - }
 
Silverlight拖放功能之完成拖放操作
完成拖放操作,实现MouseLeftButtonUp事件处理程序。
- void OnMouseUp(object sender,
 
MouseButtonEventArgs e)- {
 - FrameworkElement element =
 
sender as FrameworkElement;- trackingMouseMove = false;
 - element.ReleaseMouseCapture();
 - mousePositionmousePosition.X =
 
mousePosition.Y = 0;- element.Cursor = null;
 - }