I have a small test project to check the Drag/Drop feature of RadTreeListView. Markup:
<t:RadTreeListView ItemsSource="{Binding Items}" IsReadOnly="True" IsDragDropEnabled="True" x:Name="tree" AutoGenerateColumns="False">
<t:RadTreeListView.DragCueItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Name}"/>
<StackPanel Orientation="Horizontal">
<TextBlock Text="Children count : "/>
<TextBlock Text="{Binding Children.Count}"/>
</StackPanel>
</StackPanel>
</DataTemplate>
</t:RadTreeListView.DragCueItemTemplate>
<t:RadTreeListView.ChildTableDefinitions>
<t:TreeListViewTableDefinition ItemsSource="{Binding Children}" />
</t:RadTreeListView.ChildTableDefinitions>
<t:RadTreeListView.Columns>
<t:GridViewDataColumn DataMemberBinding="{Binding Name}" Header="Nume"/>
</t:RadTreeListView.Columns>
</t:RadTreeListView>
Nothing fancy here... I bind it to a simple hierarchy of Node's and if I drag an item I receive this event in
private static void TreePreviewDragEnded(object sender, RadTreeListViewDragEndedEventArgs e)
{
Debug.WriteLine("DropPosition: " + e.DropPosition);
Debug.WriteLine("IsCanceled: " + e.IsCanceled);
Debug.WriteLine("TargetDropItem: " + (e.TargetDropItem == null ? "<null>" : e.TargetDropItem.ToString()));
Debug.WriteLine("DraggedItems: " + e.DraggedItems);
if (e.DraggedItems.Count > 0)
{
foreach (var item in e.DraggedItems)
{
Debug.WriteLine(" Dragged item : " + item);
}
}
Debug.WriteLine("-----------------");
}
The issue is that no matter if I drop between (see attachment 1) or drop inside (see attachment 2) in the PreviewDragEnded event handler I always get e.DropPosition == Inside.
Am I doing something wrong?