Тэги

Silverlight (36) WPF (10) IIS (7) Visual Studio (7) SharePoint (6) .Net Framework (5) ODP.NET (5) ASP.NET (4) C# (4) common (4) Network Settings (3) JavaScript (2) MS Office (2) Resharper (2) WCF (2) WEB (2) XPath (2) XSLT (2) ADO.NET (1) APEX (1) CMD (1) CSS (1) EF (1) HTML (1) Hardware bugs (1) Java (1) MS SQL (1) Oracle (1) PDF (1) Version Control (1) XAML (1)

воскресенье, 25 октября 2009 г.

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.

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

    Отправить комментарий