Silverlight drag and drop参考代码

public partial class Page : UserControl

{
bool isDragDropInEffect = false;
Point pos;
 
public Page()
{
    InitializeComponent();
    // Loop through all the UIElements in the Canvas  
    // and attach Mouse Event Handlers to the Element
    foreach (UIElement uiEle in CanvasParent.Children)
    {
        uiEle.MouseMove += new MouseEventHandler(Element_MouseMove);
        uiEle.MouseLeftButtonDown += new MouseButtonEventHandler(Element_MouseLeftButtonDown);
        uiEle.MouseLeftButtonUp += new MouseButtonEventHandler(Element_MouseLeftButtonUp);
    }
}
 
void Element_MouseMove(object sender, MouseEventArgs e)
{
    if (isDragDropInEffect)
    {
        FrameworkElement currEle = sender as FrameworkElement;
        // Retrieving the item's current x and y position
        double xPos = e.GetPosition(null).X - pos.X;
        double yPos = e.GetPosition(null).Y - pos.Y;
 
        // Re-position Element
        currEle.SetValue(Canvas.TopProperty, yPos + (double)currEle.GetValue(Canvas.TopProperty));
        currEle.SetValue(Canvas.LeftProperty, xPos + (double)currEle.GetValue(Canvas.LeftProperty));
 
        // Reset the new position value
        pos = e.GetPosition(null);
    }
}
 
 
void Element_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
    FrameworkElement fEle = sender as FrameworkElement;
    isDragDropInEffect = true;
    // x and y coords of mouse pointer position
    pos = e.GetPosition(null);  
    // Enable mouse capture on element
    fEle.CaptureMouse();
    // Set the cursor to 'Hand' when mouse pointer is over element
    fEle.Cursor = Cursors.Hand;
}
 
 
void Element_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
    if (isDragDropInEffect)
    {
        FrameworkElement ele = sender as FrameworkElement;
        isDragDropInEffect = false;
        // Removes Mouse Capture from Element being dragged
        ele.ReleaseMouseCapture();
    }
}
 

}

 

这段代码把CanvasContent里的元素都变成可拖拽的.

posted @ 2008-11-21 13:40  哥本哈士奇(aspnetx)  阅读(950)  评论(0编辑  收藏  举报