TreeView Drag and Drop Performance with many (200+) items selected

2 posts, 0 answers
  1. Dano
    Dano avatar
    2 posts
    Member since:
    Feb 2011

    Posted 03 Jul 2018 Link to this post

    Hello,

    I am using the RadTreeView control to give the user a way to arrange and sequence many items, and all of its features have been great for customizing the various ways to interact with the items.  The issue I am currently having is when many items are selected for a drag and drop operation, sometimes upwards of 400 at a time, the drag is very slow to initialize, the drop preview becomes sluggish, and the drop operation itself takes several seconds to complete.  When selecting just a few items (under 30 or so..) there are no noticeable delays.

    For my application specifically I use MVVM, and I must use Windows.Forms.Integration.ElementHost since I am plugging into a framework/environment that is not in my control. Both of these factor into performance, but even using the RadTreeView in a standalone WPF application the slowdowns can be observed.

    Here is my instance of the treeview to give some context with the settings I am using:

    <telerik:RadTreeView
                 SelectionMode="Extended"
                 IsDragDropEnabled="True"
                 IsDragPreviewEnabled="False"
                 IsDragTooltipEnabled="True"
                 IsDropPreviewLineEnabled="False"
                 IsEditable="True"
                 Grid.IsSharedSizeScope="True"
                 telerik:ScrollingSettingsBehavior.ScrollStep="40"
                 telerik:ScrollingSettingsBehavior.ScrollStepTime="00:00:00.01"
                 telerik:ScrollingSettingsBehavior.ScrollAreaPadding="40"
                 telerik:AnimationManager.IsAnimationEnabled="False"
                 IsVirtualizing="False"
                 IsExpandOnDblClickEnabled="True">
     
     </telerik:RadTreeView>

     

    Do you have any recommendations for what I can change to improve the experience when drag and drop is performed on so many items?

    Thanks!

  2. Dinko
    Admin
    Dinko avatar
    914 posts

    Posted 06 Jul 2018 Link to this post

    Hello Dan,

    Let first start with that the drag/drop mechanism of RadTreeView internally makes a snapshot of the containers of the control. When having the virtualization enabled (  IsVirtualizing="True") these containers would be only the ones present in the viewport. This is the by-design implementation of the control. This is a current limitation of this functionality.

    From your code snippet, I can see that you have set the IsVirtualizing property to false. Setting this property to false will lead to expected behavior from the drag-drop functionality but is degrading the performance of the RadTreeView. There are logged feature request in our Feedback Portal where you can track its progress and vote for its implementation. At this moment I can't give you a solution which can be used to optimize this behavior.

    Regards,
    Dinko
    Progress Telerik
    Want to extend the target reach of your WPF applications, leveraging iOS, Android, and UWP? Try UI for Xamarin, a suite of polished and feature-rich components for the Xamarin framework, which allow you to write beautiful native mobile apps using a single shared C# codebase.
Back to Top