silverlight   发布时间:2022-05-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了一步一步学Silverlight 2系列(5):实现简单的拖放功能大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_450_0@

概述

  概述 Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, Ironpython,对JSON、Web service、WCF以及Sockets的支持等一系列新的特性。《一步一步学Silverlight 2系列》文章带您快速进入silverlight 2开

 

概述

Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic,Visual C#,IronRuby,Ironpython,对JSON、Web service、WCF以及Sockets的支持等一系列新的特性。《一步一步学Silverlight 2系列》文章带您快速进入silverlight 2开发。

本文为系列文章第五篇,利用前面讲过的鼠标事件处理实现简单的拖放功能

准备XAML

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

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

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

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

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

<Canvas BACkground="#46461F">
    <Button 
       @H_210_44@mouSELEftButtonDown="OnMouseDown" 
       @H_210_44@mouseMove="OnMouseMove"
       @H_210_44@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" @H_210_44@margin="10"></TextBlock>
            </StackPanel>
        </Button.Content>
    </Button>
</Canvas>

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

开始拖放操作

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

bool trackingMouseMove = false;
Point @H_457_41@mousePosition;

void OnMouseDown(object sender,@H_595_160@mouseButtonEventArgs E)
{
    FrameworkElement element = sender as FrameworkElement;
    mousePosition = e.GetPosition(null);
    trackingMouseMove = true;
    if (null != element)
    {
        element.CaptureMouse();
        element.cursor = cursors.Hand;
    }
}

移动对象

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

void OnMouseMove(object sender,@H_595_160@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);
    }
}

完成拖放操作

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

void OnMouseUp(object sender,@H_595_160@mouseButtonEventArgs E)
{
    FrameworkElement element = sender as FrameworkElement;
    trackingMouseMove = false;
    element.ReleaseMouseCapture();

    mousePosition.X = mousePosition.Y = 0;
    element.cursor = null;
}

效果显示

最终,完成后的效果如下

一步一步学Silverlight 2系列(5):实现简单的拖放功能

拖动按钮

一步一步学Silverlight 2系列(5):实现简单的拖放功能

结束语

本文实现了一个简单的拖放功能(示例来自于Silverlight 2 SDK),点击下载文本示例代码

大佬总结

以上是大佬教程为你收集整理的一步一步学Silverlight 2系列(5):实现简单的拖放功能全部内容,希望文章能够帮你解决一步一步学Silverlight 2系列(5):实现简单的拖放功能所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。