Pregunta

Soy nuevo en Silverlight: he visto los tutoriales y todo lo que estoy buscando son pasos de alto nivel necesarios para implementar arrastrar y soltar y quizás un poco de (pseudo) código solo para tener una idea.

Cualquier ayuda apreciada!

¿Fue útil?

Solución

¿Podría explicar exactamente lo que le gustaría lograr con arrastrar y soltar en Silverlight? La respuesta principal en la pregunta que ha vinculado a los enlaces a esta página: http://www.adefwebserver.com/DotNetNukeHELP/Misc/Silverlight/DragPndProprop / / a>

Esto contiene un proyecto de ejemplo con una fuente que implementa arrastrar y soltar (casualmente, basado en un ejemplo que hice para la beta 1 de Silverlight 2 :-)). ¿Qué pasa con este código no es adecuado para sus necesidades?

EDITAR: El esqueleto básico de una implementación de arrastrar y soltar se vería así:

bool isDragging = false;

void elementMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
    if (element.CaptureMouse())
    {
        isDragging = true;
        element.MouseMove += elementMouseMove;
        //start drag code goes here
    }
}

void elementMouseMove(object sender, MouseEventArgs e)
{
    //Drag code goes here
}

void element_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
    if (isDragging)
    {
        element.ReleaseMouseCapture();
        isDragging = false;
        element.MouseMove -= elementMouseMove;

        //Drop code goes here
    }
}

Agregue los controladores MouseLeftButtonUp / Down al elemento que desea arrastrar.

En el controlador de eventos MouseMove, agregue el código que desea ejecutar durante el arrastre: por ejemplo, cambie Canvas.Top y Canvas.Left para que coincida con la posición del mouse. Puede obtener la posición del mouse desde los argumentos de evento. Probablemente desee obtener la posición relativa al contenedor de elementos.

En el controlador de eventos MouseLeftButtonUp, agregue el código que se ejecutaría cuando el " drop " ocurre. Por ejemplo, es posible que desee implementar una " papelera de reciclaje " que los elementos pueden ser arrastrados a En ese caso, querrá saber qué elementos se encuentran debajo del mouse en el punto de la gota. Puede usar VisualTreeHelper.FindElementsAtHostCoordinates, pasando la posición del mouse en relación con la raíz de la aplicación (use e.GetPosition (null)). Luego, si tu " papelera de reciclaje " El elemento es devuelto por FindElementsInHostCoordinates que usted conoce para ejecutar la acción apropiada.

¿Esto ayuda a responder tu pregunta?

Otros consejos

no es MouseLeftButtonDown donde se supone que debes iniciar la captura, no en mouseleftbuttonup?

scroll top