This question is locked. New answers and comments are not allowed.
Justin Lee
Top achievements
Rank 1
Justin Lee
asked on 01 Apr 2013, 02:09 PM
I have a page were I drag from a TreeListView into a TreeView. Both controls are bound to lists of the same item type. I was using RadDragAndDropManager to wire up a couple events, which basically just QueryResult and IsDropPossible to true. That was basically all I had to do to make the drag/drop work. I recently upgraded to Q1 2013, and it stopped working. I noticed RadDragAndDropManager was depreciated. I'm trying to make this scenario work with DragDropManager, but I can't seem to figure out a simple solution.
- Drag from RadTreeListView to RadTreeView. (only 1 way)
- Itemsources are of same object type.
- On TreeListView, I have set IsDragDropEnabled=True, AllDrop=False
- On TreeView, I have set IsDragDropEnabled=True, AllowDrop=True
I can drag between the TreeViews, but I cannot drop from the TreeListView on the TreeView. (it drags, but doesn't drop)
(I have multiple treeviews, that can be dragged onto, but only on TreeListView (the source))
Thanks,
Justin
- Drag from RadTreeListView to RadTreeView. (only 1 way)
- Itemsources are of same object type.
- On TreeListView, I have set IsDragDropEnabled=True, AllDrop=False
- On TreeView, I have set IsDragDropEnabled=True, AllowDrop=True
I can drag between the TreeViews, but I cannot drop from the TreeListView on the TreeView. (it drags, but doesn't drop)
(I have multiple treeviews, that can be dragged onto, but only on TreeListView (the source))
Thanks,
Justin
5 Answers, 1 is accepted
0
Hi Justin,
Nik
the Telerik team
You can subscribe to the DragOver event of the TreeList and set the e.Effects to None.
Let me know if this helps!
Nik
the Telerik team
Explore the entire Telerik portfolio by downloading Telerik DevCraft Ultimate.
0
Justin Lee
Top achievements
Rank 1
answered on 04 Apr 2013, 09:10 PM
No, that did nothing. I also tried the same thing with the TreeView, and also tried other effects (copy, move)
The treeview does not react to the drag, and when I drop, it does nothing.
The treeview does not react to the drag, and when I drop, it does nothing.
private void RadTreeView_Loaded(object sender, System.Windows.RoutedEventArgs e){ RadTreeListView treeListView = (RadTreeListView)sender; DragDropManager.AddDragOverHandler(treeView, treeView_DragOver);}void treeView_DragOver(object sender, Telerik.Windows.DragDrop.DragEventArgs e){ e.Effects = DragDropEffects.None;}0
Justin Lee
Top achievements
Rank 1
answered on 04 Apr 2013, 09:39 PM
I have created a simple project demonstrating the behavior (or lack of behavior)
<UserControl x:Class="DragExample.MainPage" xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation" mc:Ignorable="d" d:DesignHeight="300" d:DesignWidth="600"> <UserControl.Resources> <telerik:HierarchicalDataTemplate x:Key="TreeViewItemTemplate" ItemsSource="{Binding ChildItems}"> <TextBlock Text="{Binding Name}" FontSize="9"></TextBlock> </telerik:HierarchicalDataTemplate> </UserControl.Resources> <Grid x:Name="LayoutRoot" Background="White" VerticalAlignment="Center" HorizontalAlignment="Center" Width="600" Height="300"> <Grid.ColumnDefinitions> <ColumnDefinition Width="*"/> <ColumnDefinition Width="*"/> </Grid.ColumnDefinitions> <telerik:RadTreeListView Loaded="RadTreeListView_Loaded_1" Grid.Row="1" HorizontalAlignment="Stretch" IsDragDropEnabled="True" AllowDrop="False" AutoGenerateColumns="False" IsReadOnly="True" ShowGroupPanel="False" RowIndicatorVisibility="Collapsed" ItemsSource="{Binding TreeListItems}" SelectionMode="Single"> <telerik:RadTreeListView.Columns> <telerik:GridViewDataColumn Header="Name" Width="180" DataMemberBinding="{Binding Name}" /> <telerik:GridViewDataColumn Header="Description" Width="*" DataMemberBinding="{Binding Description}" /> </telerik:RadTreeListView.Columns> </telerik:RadTreeListView> <telerik:RadTreeView Grid.Column="1" HorizontalAlignment="Left" Loaded="RadTreeView_Loaded_1" SelectionMode="Single" MinHeight="150" ItemsSource="{Binding TreeItems}" telerik:DragDropManager.AllowDrag="True" telerik:DragDropManager.AllowCapturedDrag="True" IsDragDropEnabled="True" AllowDrop="True" IsEditable="false" ScrollViewer.HorizontalScrollBarVisibility="Disabled" ItemTemplate="{StaticResource TreeViewItemTemplate}" VerticalAlignment="Top" IsLineEnabled="True" /> </Grid></UserControl>public partial class MainPage : UserControl { public MainPage() { InitializeComponent(); this.DataContext = new DataSource(); } private void RadTreeListView_Loaded_1(object sender, RoutedEventArgs e) { RadTreeListView treeListView = (RadTreeListView)sender; DragDropManager.AddDragOverHandler(treeListView, treeListView_DragOver); } void treeListView_DragOver(object sender, Telerik.Windows.DragDrop.DragEventArgs e) { e.Effects = DragDropEffects.None; } private void RadTreeView_Loaded_1(object sender, RoutedEventArgs e) { } } public class DataSource : BasePropertyNotifyClass { public ObservableCollection<Item> TreeListItems { get; set; } public ObservableCollection<Item> TreeItems { get; set; } public DataSource() { TreeListItems = new ObservableCollection<Item>(); TreeListItems.Add(new Item() { Name = "Item 1", Description = "Some Description" }); TreeListItems.Add(new Item() { Name = "Item 2", Description = "Some Description" }); TreeListItems.Add(new Item() { Name = "Item 3", Description = "Some Description" }); TreeItems = new ObservableCollection<Item>(); TreeItems.Add(new Item() { Name = "Item A", Description = "Some Description" }); TreeItems.Add(new Item() { Name = "Item B", Description = "Some Description" }); TreeItems.Add(new Item() { Name = "Item C", Description = "Some Description" }); } } public class Item : BasePropertyNotifyClass { public string Name { get; set; } public string Description { get; set; } public ObservableCollection<Item> ChildItems { get; set; } public Item() { ChildItems = new ObservableCollection<Item>(); } public override string ToString() { return Name; } } public class BasePropertyNotifyClass : INotifyPropertyChanged { #region INotifyProperyChanged Interface public event PropertyChangedEventHandler PropertyChanged; protected void NotifyPropertyChanged(String propertyName) { if (PropertyChanged != null) { PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); } } #endregion }0
Accepted
Hello Justin,
Nik
the Telerik team
I am attaching a modified version of your sample, where you can see how you can achieve your goal.
The approach is a combined version of the behaviors shown here and here.
Hope it helps!
Nik
the Telerik team
Explore the entire Telerik portfolio by downloading Telerik DevCraft Ultimate.
0
Justin Lee
Top achievements
Rank 1
answered on 08 Apr 2013, 03:24 PM
Thank you for your help. I'll see if I can work with this project. One thing I noticed is there is no feedback from the treeview on where the drop will occur. This makes it very difficult to drop in the correct place in the tree. It seems like its fairly complicated to get this to work, whereas it work with little code with the RadDragandDropManager in previous releases. I may consider just using a treeview with a custom template instead of a treelistview so its easier to work with. I appreciate your help though.
Thanks,
Justin
Thanks,
Justin