silverlight   发布时间:2022-05-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了兼容Silverlight4的实用的Silverlight可拖放工具类源代码大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

开发日常的Silverlight应用程序时,常常要对一个域多个控件实现可拖放的MOUSE操作,在Silverlight中实现拖放的功能其实非常简单,但是为了提高程序功能代码的可复用性,程序员常常喜欢把常用的代码封装成一个工具类,例如Asp.net中常用SQLHelper类,用来操作数据库的,这里我们介绍的类是在Silverlight中实现拖动的工具类,它支持Silverlight2.0至Silve
@H_502_6@开发日常的Silverlight应用程序时,常常要对一个域多个控件实现可拖放的MOUSE操作,在Silverlight中实现拖放的功能其实非常简单,但是为了提高程序功能代码的可复用性,程序员常常喜欢把常用的代码封装成一个工具类,例如Asp.net中常用sqlHelper类,用来操作数据库的,这里我们介绍的类是在Silverlight中实现拖动的工具类,它支持Silverlight2.0至Silverlight4.0的各个版本通用,好了话不多说,我们还是看代码吧:

public static class DragDrop
{
    private static bool IsDragging = false;
    private static Point curPoint;
    private const int MAX_ZINDEX = 99999;
    private const double CURRENT_OPACITY = 0.5;
    private static int lastZIndex;
    private static double lastOpacity;

    private static void sender_MouSELEftButtonDown(object sender,MouseButtonEventArgs E)
    {
        UIElement uiElement = sender as UIElement;
        if (uiElement != null)
        {
            uiElement.CaptureMouse();
            lastZIndex = (int)uiElement.GetValue(Canvas.ZIndexProperty);
            uiElement.SETVALue(Canvas.ZIndexProperty,MAX_ZINDEX);
            lastOpacity = uiElement.opacity;
            uiElement.opacity = CURRENT_OPACITY;
            IsDragging = true;
            curPoint = new Point(e.GetPosition(null).X,e.GetPosition(null).Y);
        }
    }

    private static void sender_MouseMove(object sender,MouseEventArgs E)
    {
        if (!IsDragging)
        {
            return;
        }

        UIElement uiElement = sender as UIElement;
        if (uiElement != null)
        {
            double currentLeft = (double)uiElement.GetValue(Canvas.LeftProperty);
            double currentTop = (double)uiElement.GetValue(Canvas.TopProperty);

            double newLeft = (double)currentLeft + e.GetPosition(null).X - curPoint.X;
            double newTop = (double)currentTop + e.GetPosition(null).Y - curPoint.Y;

            uiElement.SETVALue(Canvas.LeftProperty,newLeft);
            uiElement.SETVALue(Canvas.TopProperty,newTop);
            curPoint = new Point(e.GetPosition(null).X,e.GetPosition(null).Y);
        }
    }

    private static void sender_MouSELEftButtonUp(object sender,MouseButtonEventArgs E)
    {
        UIElement uiElement = sender as UIElement;
        if (uiElement != null)
        {
            uiElement.ReleaseMouseCapture();
            IsDragging = false;
            uiElement.SETVALue(Canvas.ZIndexProperty,lastZIndeX);
            uiElement.opacity = lastOpacity;
        }
    }

    public static void Load(UIElement sender)
    {
        sender.MouSELEftButtonDown += new MouseButtonEventHandler(sender_MouSELEftButtonDown);
        sender.MouSELEftButtonUp += new MouseButtonEventHandler(sender_MouSELEftButtonUp);
        sender.MouseMove += new MouseEventHandler(sender_MouseMovE);
    }

    public static void UnLoad(UIElement sender)
    {
        sender.MouSELEftButtonDown -= new MouseButtonEventHandler(sender_MouSELEftButtonDown);
        sender.MouSELEftButtonUp -= new MouseButtonEventHandler(sender_MouSELEftButtonUp);
        sender.MouseMove -= new MouseEventHandler(sender_MouseMovE);
    }
}

DragDrop工具类的使用方法
DragDrop.Load(LayoutRoot);
DragDrop是一个静态类,使用起来非常简单,以上只要一行代码就可以实现对Grid控件的拖放操作了。
希望对大家有所帮助~!

大佬总结

以上是大佬教程为你收集整理的兼容Silverlight4的实用的Silverlight可拖放工具类源代码全部内容,希望文章能够帮你解决兼容Silverlight4的实用的Silverlight可拖放工具类源代码所遇到的程序开发问题。

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

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