Pergunta

Eu sou novo para o Silverlight - Eu vi o tutoriais tudo, o que eu estou procurando são etapas de alto nível necessário para implementar arrastar e soltar e talvez um pouco de código (pseudo) só para ter uma idéia.

Qualquer ajuda apreciada!

Foi útil?

Solução

Você poderia explicar exatamente o que você gostaria de alcançar com drag and drop em Silverlight? A resposta de topo na pergunta que você ligados a links para esta página: http://www.adefwebserver.com/DotNetNukeHELP/Misc/Silverlight/DragAndDropTest/

Este contém um projeto de exemplo com a fonte que implementa arrastar e soltar (coincidentemente, com base numa amostra que fiz para beta 1 do Silverlight 2 :-)). E sobre este código não é adequado para suas necessidades?

EDIT: O esqueleto básico de uma implementação de arrastar e soltar seria parecido com:

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

Adicionar os manipuladores MouseLeftButtonUp / Para baixo para o elemento que deseja arrastar.

No manipulador de eventos MouseMove, adicione o código que você deseja executar durante o arrastar: por exemplo, mudança Canvas.Top e Canvas.Left para coincidir com a posição do mouse. Você pode obter a posição do mouse a partir dos argumentos de evento. Você provavelmente quer obter a posição em relação ao contêiner elementos.

No manipulador de eventos MouseLeftButtonUp, adicione o código que será executado quando o "drop" ocorre. Por exemplo, você pode querer implementar uma "lixeira" que os elementos podem ser arrastados para. Nesse caso, você gostaria de saber quais elementos estão debaixo do mouse no ponto da queda. Você pode usar VisualTreeHelper.FindElementsAtHostCoordinates, passando a posição do mouse em relação à raiz do aplicativo (use e.GetPosition (null)). Então, se o seu elemento "Lixeira" é devolvido pelo FindElementsInHostCoordinates você sabe para executar a ação apropriada.

Será que isso ajuda resposta que você pergunta?

Outras dicas

não é MouseLeftButtonDown onde é suposto estar a iniciar a captura, e não sobre MouseLeftButtonUp?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top