新聞中心
Silverlight工具是一個(gè)非常有用的開發(fā)工具。可以幫助開發(fā)人員輕松實(shí)現(xiàn)基于多媒體播放操作等功能。在實(shí)際使用中,我們會(huì)體會(huì)到其強(qiáng)大的功能特定。在這里就先來(lái)了解其中Silverlight拖放功能的作用。#t#

創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的資中網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
在Silverlight拖放功能的實(shí)現(xiàn)中,分為三個(gè)步驟:
1.按下鼠標(biāo),觸發(fā)MouseLeftButtonDown事件,選擇要拖動(dòng)的對(duì)象。
2.移動(dòng)鼠標(biāo),觸發(fā)MouseMove事件,移動(dòng)選擇的對(duì)象。
3.放開鼠標(biāo),觸發(fā)MouseLeftButtonUp事件,停止捕捉事件。
做一個(gè)簡(jiǎn)單的界面,用一個(gè)按鈕來(lái)顯示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="拖動(dòng)我"
VerticalAlignment="Center"
Margin="10">< /TextBlock>- < /StackPanel>
- < /Button.Content>
- < /Button>
- < /Canvas>
這里為了界面顯示效果,使用了控件模板,后續(xù)會(huì)專門講到。
Silverlight拖放功能之開始拖放操作
開始拖放操作,實(shí)現(xiàn)MouseLeftButtonDown事件處理程序,用兩個(gè)全局變量來(lái)記錄當(dāng)前鼠標(biāo)的位置和鼠標(biāo)是否保持移動(dòng)。
- 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拖放功能之移動(dòng)對(duì)象
移動(dòng)對(duì)象,實(shí)現(xiàn)MouseMove事件處理程序,計(jì)算元素的位置并更新,同時(shí)更新鼠標(biāo)的位置。
- 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拖放功能之完成拖放操作
完成拖放操作,實(shí)現(xiàn)MouseLeftButtonUp事件處理程序。
- void OnMouseUp(object sender,
MouseButtonEventArgs e)- {
- FrameworkElement element =
sender as FrameworkElement;- trackingMouseMove = false;
- element.ReleaseMouseCapture();
- mousePositionmousePosition.X =
mousePosition.Y = 0;- element.Cursor = null;
- }
本文標(biāo)題:Silverlight拖放功能相關(guān)應(yīng)用技巧分享
鏈接URL:http://fisionsoft.com.cn/article/cdcpcee.html


咨詢
建站咨詢
