À quel point est-il facile de mettre en œuvre le glisser-déposer dans Silverlight?

StackOverflow https://stackoverflow.com/questions/609846

  •  03-07-2019
  •  | 
  •  

Question

Silverlight est nouveau pour moi. J'ai consulté les didacticiels et Ce que je recherche tous, ce sont des étapes de haut niveau requises pour implémenter le glisser-déposer et peut-être un peu de (pseudo) code juste pour avoir une idée.

Toute aide appréciée!

Était-ce utile?

La solution

Pouvez-vous expliquer exactement ce que vous souhaitez réaliser avec le glisser-déposer dans Silverlight? La réponse principale dans la question que vous avez liée à des liens vers cette page: http://www.adefwebserver.com/DotNetNukeHELP/Misc/Silverlight/Autorité / a>

Ceci contient un exemple de projet avec source implémentant le glisser-déposer (comme par hasard, basé sur un exemple que j'ai créé pour la version bêta 1 de Silverlight 2 :-)). Qu'en est-il de ce code n'est pas adapté à vos besoins?

EDIT: Le squelette de base d’une implémentation par glisser / déposer ressemblerait à ceci:

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
    }
}

Ajoutez les gestionnaires MouseLeftButtonUp / Down à l'élément que vous souhaitez faire glisser.

Dans le gestionnaire d'événements MouseMove, ajoutez le code que vous souhaitez exécuter pendant le glissement: par exemple. changez Canvas.Top et Canvas.Left pour qu’ils correspondent à la position de la souris. Vous pouvez obtenir la position de la souris à partir des arguments d'événement. Vous voudrez probablement obtenir la position par rapport au conteneur d’éléments.

Dans le gestionnaire d'événements MouseLeftButtonUp, ajoutez le code à exécuter lors de la suppression du message & drop; drop " se produit. Par exemple, vous souhaiterez peut-être implémenter une "corbeille". que les éléments peuvent être traînés. Dans ce cas, vous voudrez savoir quels éléments se trouvent sous la souris au point de chute. Vous pouvez utiliser VisualTreeHelper.FindElementsAtHostCoordinates en transmettant la position de la souris par rapport à la racine de l'application (utilisez e.GetPosition (null)). Ensuite, si votre "Corbeille" & L'élément est renvoyé par FindElementsInHostCoordinates que vous connaissez pour exécuter l'action appropriée.

Est-ce que cela vous aide à répondre à la question?

Autres conseils

MouseLeftButtonDown n'est-il pas censé commencer la capture, pas sur mouseleftbuttonup?

scroll top