zoukankan      html  css  js  c++  java
  • Silverlight中实现拖拽功能

    下面的示例演示如何在基于 Silverlight 的应用程序中拖放对象。出于安全考虑,不能在应用程序之间拖放对象。因此,说成在 Silverlight 插件区域内"滑动"对象更为准确。但是,术语"拖放"更为人知,因此在此处使用。

    Xaml脚本:

    <UserControl x:Class="DragAndDropSimple.Page"
        xmlns
    ="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
        xmlns:x
    ="http://schemas.microsoft.com/winfx/2006/xaml" 
        Width
    ="400" Height="300">
      
    <Canvas x:Name="rootCanvas"
      Width
    ="640"
      Height
    ="480"
      Background
    ="Gray"
      
    >
        
    <!-- You can drag this rectangle around the canvas. -->
        
    <Rectangle
        
    MouseLeftButtonDown="Handle_MouseDown"
        MouseMove
    ="Handle_MouseMove"
        MouseLeftButtonUp
    ="Handle_MouseUp"
        Canvas.Left
    ="30" Canvas.Top="30" Fill="Red"
        Width
    ="50" Height="50" />
      
    </Canvas>

    </UserControl>

    后置代码:

    // Global variables used to keep track of the 
    // mouse position and whether the object is captured
    // by the mouse.
    bool isMouseCaptured;
    double mouseVerticalPosition;
    double mouseHorizontalPosition;

    public void Handle_MouseDown (object sender, MouseEventArgs args) 
    {
        Rectangle item 
    = sender as Rectangle;
        mouseVerticalPosition 
    = args.GetPosition(null).Y;
        mouseHorizontalPosition 
    = args.GetPosition(null).X;
        isMouseCaptured 
    = true;
        item.CaptureMouse();
    }

    public void Handle_MouseMove(object sender, MouseEventArgs args) 
    {
        Rectangle item 
    = sender as Rectangle;
        
    if (isMouseCaptured) 
        {

            
    // Calculate the current position of the object.
            double deltaV = args.GetPosition(null).Y - mouseVerticalPosition;
            
    double deltaH = args.GetPosition(null).X - mouseHorizontalPosition;
            
    double newTop = deltaV + (double)item.GetValue(Canvas.TopProperty);
            
    double newLeft = deltaH + (double)item.GetValue(Canvas.LeftProperty);

            
    // Set new position of object.
            item.SetValue(Canvas.TopProperty, newTop);
            item.SetValue(Canvas.LeftProperty, newLeft);

            
    // Update position global variables.
            mouseVerticalPosition = args.GetPosition(null).Y;
            mouseHorizontalPosition 
    = args.GetPosition(null).X;
        }
    }

    public void Handle_MouseUp(object sender, MouseEventArgs args) 
    {
        Rectangle item 
    = sender as Rectangle;
        isMouseCaptured 
    = false;
        item.ReleaseMouseCapture();
        mouseVerticalPosition 
    = -1;
        mouseHorizontalPosition 
    = -1;
    }
  • 相关阅读:
    第六周 组合数据类型
    第五周 函数和代码复用
    第四周 程序的控制结构
    第三周 Python基本数据类型
    python库
    sublime text3自定义设置及快捷键大全
    Sublime Text3插件安装教程
    Linux 标准目录结构
    快学Scala-10--List 和Set
    快学Scala-09--模式匹配
  • 原文地址:https://www.cnblogs.com/Dlonghow/p/1353693.html
Copyright © 2011-2022 走看看