Silverlight Drag And Drop. У Сильверлайта появился свой нормальный драг дроп с выходом Toolkit от октября 2009 года.



Очень хорошо!
Но оказалось, что это заметно тормозит при количестве элементов в списке от 500. Например, если в ListBox 3 000 элементов, то какая-либо реакция проявляется только через 5 секунд.
Пока проджекта не уговорю сделать пейджинг и фильтрацию, придется, для некоторых задач, продолжить пользоваться своим аналогичным фреймворком, который работает ваабще без задержек.
Но все равно стоит использовать решение из Toolkit, т.к., например, мое решение не умеет разворачивать ноды в TreeView. Недолго сделать, но прикручивать все такие мелочи – жизни не хватит :) .

Ниже источники и описание.

Блог Tim Heuer "Silverlight Toolkit adds DragDrop" EN – здесь ознакомительное описание, позволяющее начать работать с примером.
Silverlight Toolkit EN – а здесь исходник с примером.
Если вы хотите глубоко кастомизировать ваши решения, то нужно смотреть
New with the Silverlight Toolkit: Drag and Drop Support for all your Favorite Controls! (Part 1) и
Silverlight Toolkit Drag Drop (Part 2): Customizing Drag and Drop Behavior
Пример можно посмотреть в ToolKit (выберите в меню слева внизу) и у Tim Heuer.

Этот DragDrop строится на подходе WPF (слава богу) с такими же событиями. Даже можно писать переносимый код, соблюдая некоторые условия.
Идея этого Drag Drop в следуюещем, теперь можно для ListBox, TreeView, DataGrid и графиков (Charts) исполльзовать Драгэнддроп, если вложить их в соответствующий элемент:
  • ListBoxDragDropTarget

  • TreeViewDragDropTarget

  • DataGridDragDropTarget

  • DataPointSeriesDragDropTargetНо также можно применять подход на основе событий и регестрировать через свойства элементы учавствующие в Драг Анд Дроп.

    Важно, что решение можно глубоко кастомизировать и настраивать.
    Заявляется, что можно делать Drag Drop внутри одного контрола, но только в случае ListBox для этого нужно отключать виртуализационную панель. В приведенных выше ссылках об этом рассказано подробно.
    Также доступно перемещение за раз нескольких элементов при множественном выделении айтемов.

    Я за унификацию, поэтому буду переходить на новый Drag Drop, хотя уже привык к некоторым своим фичам, способам визуализации и регистрации источников и приемников Drag Drop.

  • Комментарии

    Популярные сообщения из этого блога

    A4tech. Мышь не найдена. Пожалуйста, подсоедините мышь.

    SVN: Пропали иконки TortoiseSVN.

    Вывод в cmd или bat пустой строки.