Cannot Drag Item from RadTreeView to Image

2 posts, 0 answers
  1. Justin Young
    Justin Young avatar
    1 posts
    Member since:
    Oct 2009

    Posted 15 Mar 2010 Link to this post

    I am attempting to drag a RadTreeViewItem from a RadTreeView to an Image. I've recreated the problem in a clean solution and will include the XAML and CS below. My issue is, when I am dragging the RadTreeViewItem "Drag Me" (x:Name="draggable") over the RadTreeViewItem "Drop Me" (x:Name="droppable") I get an informative DragCue which shows my item and indicates that I am able to "Drop in Drop Me". Upon dropping the item, the treeview's DragEnded event is fired and I can perform any logic required there.
    When I try to drag "Drag Me" over the Image (x:Name="droppableImage"), a block (red circle with slash) appears next to the item and when I drop it, the DragEnded event does not fire. The OnDropQuery event does fire upon hovering over the image, however setting e.QueryResult = true does not alter the behavior. Anyhow, the code below should be fairly self explanatory.

    Thanks in advance.

    MainPage.xaml
    -------------------------------------------------------------------------------------------------------
    <UserControl x:Class="TestDrag.MainPage" 
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"  
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:Controls="clr-namespace:Telerik.Windows.Controls;assembly=Telerik.Windows.Controls.Navigation" xmlns:DragDrop="clr-namespace:Telerik.Windows.Controls.DragDrop;assembly=Telerik.Windows.Controls"  
        mc:Ignorable="d" d:DesignWidth="640" d:DesignHeight="480"
      <Grid x:Name="LayoutRoot"
            <Image x:Name="droppableImage" Source="check.png" DragDrop:RadDragAndDropManager.AllowDrop="True" /> 
            <Controls:RadTreeView x:Name="treeView" IsDragDropEnabled="True" BorderBrush="Black" BorderThickness="1"
                <Controls:RadTreeView.Items> 
                    <Controls:RadTreeViewItem x:Name="droppable" Header="Drop Me" IsDropAllowed="True" /> 
                    <Controls:RadTreeViewItem x:Name="draggable" Header="Drag Me" IsDropAllowed="False" /> 
                </Controls:RadTreeView.Items> 
            </Controls:RadTreeView> 
        </Grid> 
    </UserControl> 
     

    -------------------------------------------------------------------------------------------------------

    MainPage.xaml.cs
    -------------------------------------------------------------------------------------------------------
    namespace TestDrag { 
        public partial class MainPage : UserControl { 
            public MainPage() { 
                InitializeComponent(); 
     
                treeView.DragEnded += treeView_DragEnded; 
                treeView.AddHandler(RadDragAndDropManager.DropQueryEvent, new EventHandler<DragDropQueryEventArgs>(OnDropQuery), true); 
                draggable.AddHandler(RadDragAndDropManager.DropQueryEvent, new EventHandler<DragDropQueryEventArgs>(OnDropQuery), true); 
            } 
     
            private void treeView_DragEnded(object sender, RadTreeViewDragEndedEventArgs e) { 
                if (e.TargetDropItem != null && e.DraggedItems.Count == 1) { 
                    RadWindow.Alert("DragEnded fired."); 
                } 
            } 
     
            private void OnDropQuery(object sender, DragDropQueryEventArgs e) { 
                if (e.Options.Destination is RadTreeViewItem) { 
                    var treeViewItem = (RadTreeViewItem)e.Options.Destination; 
                    if (treeViewItem.DropPosition != DropPosition.Inside) { 
                        e.QueryResult = false
                    } 
                } else if (e.Options.Destination is Image) { 
                    e.QueryResult = true
                    e.Handled = true
                } 
            } 
        } 

  2. Miroslav
    Admin
    Miroslav avatar
    922 posts

    Posted 19 Mar 2010 Link to this post

    Hello Justin Young,

    I am sorry for the delayed reply!

    Yes, the visual that appears during DragDrop is a TreeViewDragCue obejct. It can be accessed by the e.Options.DragCue property. There you can assign a drag action / tooltip / items.

    The icon is controlled by the IsDropPossible property. I modified your code to do this, you can see the attached project.

    Best wishes,
    Miroslav
    the Telerik team

    Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items.
Back to Top