Насколько легко на самом деле реализовать drag & drop в silverlight?

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

  •  03-07-2019
  •  | 
  •  

Вопрос

Я новичок в silverlight - я видел Руководства и все, что я ищу, - это высокоуровневые шаги, необходимые для реализации drag & drop, и, возможно, немного (псевдо) кода, просто чтобы получить представление.

Любая помощь приветствуется!

Это было полезно?

Решение

Не могли бы вы точно объяснить, чего бы вы хотели добиться с помощью перетаскивания в Silverlight?Главный ответ в вопросе, на который вы ссылались, ссылается на эту страницу:http://www.adefwebserver.com/DotNetNukeHELP/Misc/Silverlight/DragAndDropTest/

Это содержит пример проекта с исходным кодом, который реализует перетаскивание (по совпадению, на основе образца, который я сделал для бета-версии 1 Silverlight 2 :-) ).Что в этом коде не подходит для ваших нужд?

Редактировать:Базовый скелет реализации перетаскивания будет выглядеть следующим образом:

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

Добавьте обработчики MouseLeftButtonUp / Down к элементу, который вы хотите перетащить.

В обработчике события MouseMove добавьте код, который вы хотите выполнить во время перетаскивания:например ,измените холст.Вверху и холст.Слева, чтобы соответствовать положению мыши.Вы можете получить положение мыши из аргументов события.Вероятно, вы хотели бы получить позицию относительно контейнера elements.

В обработчике события MouseLeftButtonUp добавьте код, который будет выполняться при возникновении "отбрасывания".Например, вы можете захотеть реализовать "корзину", в которую можно перетаскивать элементы.В этом случае вы хотели бы знать, какие элементы находятся под мышью в точке перетаскивания.Вы можете использовать VisualTreeHelper.finddelementsathostcoordinates, передавая положение мыши относительно корневого каталога приложения (используйте e.GetPosition(null)).Затем, если ваш элемент "корзины" возвращается FindElementsInHostCoordinates, вы знаете, что нужно выполнить соответствующее действие.

Поможет ли это ответить на ваш вопрос?

Другие советы

не MouseLeftButtonDown, где вы должны начинать захват, а не mouseleftbuttonup?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top