Hello Telerik,
I am implementing a feature which consists of a list of user controls that can be dragged to dock panels.
At the moment there are two feature I need to implement. I've described the first one here http://www.telerik.com/forums/remove-the-not-allowed-icon-on-drag
then I also need to prevent the drag & drop of an item of the tree to itself.
Basically I need to restrict the drag&drop from tree to dockpanels only.
I will attach a screen shot of what i wish to prevent and my source code below
XAML
<
Window
x:Class
=
"DashboardGrid.MainWindow"
xmlns:local
=
"clr-namespace:DashboardGrid"
xmlns:telerik
=
"http://schemas.telerik.com/2008/xaml/presentation"
mc:Ignorable
=
"d"
Title
=
"MainWindow"
Height
=
"350"
Width
=
"525"
>
<
Grid
>
<
Grid.ColumnDefinitions
>
<
ColumnDefinition
Width
=
"3*"
/>
<
ColumnDefinition
Width
=
"*"
/>
</
Grid.ColumnDefinitions
>
<
Grid
>
<
Grid.ColumnDefinitions
>
<
ColumnDefinition
/>
<
ColumnDefinition
/>
<
ColumnDefinition
/>
</
Grid.ColumnDefinitions
>
<
Grid.RowDefinitions
>
<
RowDefinition
/>
<
RowDefinition
/>
<
RowDefinition
/>
</
Grid.RowDefinitions
>
<
telerik:RadDocking
Grid.Row
=
"0"
Grid.Column
=
"0"
Drop
=
"RadDocking_Drop"
AllowDrop
=
"True"
>
<
telerik:RadSplitContainer
>
<
telerik:RadPaneGroup
>
</
telerik:RadPaneGroup
>
</
telerik:RadSplitContainer
>
</
telerik:RadDocking
>
<
telerik:RadDocking
Grid.Row
=
"1"
Grid.Column
=
"0"
Drop
=
"RadDocking_Drop"
AllowDrop
=
"True"
>
<
telerik:RadSplitContainer
>
<
telerik:RadPaneGroup
>
</
telerik:RadPaneGroup
>
</
telerik:RadSplitContainer
>
</
telerik:RadDocking
>
<
telerik:RadDocking
Grid.Row
=
"2"
Grid.Column
=
"0"
Drop
=
"RadDocking_Drop"
AllowDrop
=
"True"
>
<
telerik:RadSplitContainer
>
<
telerik:RadPaneGroup
>
</
telerik:RadPaneGroup
>
</
telerik:RadSplitContainer
>
</
telerik:RadDocking
>
<
telerik:RadDocking
Grid.Row
=
"0"
Grid.Column
=
"1"
Drop
=
"RadDocking_Drop"
AllowDrop
=
"True"
>
<
telerik:RadSplitContainer
>
<
telerik:RadPaneGroup
>
</
telerik:RadPaneGroup
>
</
telerik:RadSplitContainer
>
</
telerik:RadDocking
>
<
telerik:RadDocking
Grid.Row
=
"1"
Grid.Column
=
"1"
Drop
=
"RadDocking_Drop"
AllowDrop
=
"True"
>
<
telerik:RadSplitContainer
>
<
telerik:RadPaneGroup
>
</
telerik:RadPaneGroup
>
</
telerik:RadSplitContainer
>
</
telerik:RadDocking
>
<
telerik:RadDocking
Grid.Row
=
"2"
Grid.Column
=
"1"
Drop
=
"RadDocking_Drop"
AllowDrop
=
"True"
>
<
telerik:RadSplitContainer
>
<
telerik:RadPaneGroup
>
</
telerik:RadPaneGroup
>
</
telerik:RadSplitContainer
>
</
telerik:RadDocking
>
<
telerik:RadDocking
Grid.Row
=
"0"
Grid.Column
=
"2"
Drop
=
"RadDocking_Drop"
AllowDrop
=
"True"
>
<
telerik:RadSplitContainer
>
<
telerik:RadPaneGroup
>
</
telerik:RadPaneGroup
>
</
telerik:RadSplitContainer
>
</
telerik:RadDocking
>
<
telerik:RadDocking
Grid.Row
=
"1"
Grid.Column
=
"2"
Drop
=
"RadDocking_Drop"
AllowDrop
=
"True"
>
<
telerik:RadSplitContainer
>
<
telerik:RadPaneGroup
>
</
telerik:RadPaneGroup
>
</
telerik:RadSplitContainer
>
</
telerik:RadDocking
>
<
telerik:RadDocking
Grid.Row
=
"2"
Grid.Column
=
"2"
Drop
=
"RadDocking_Drop"
AllowDrop
=
"True"
>
<
telerik:RadSplitContainer
>
<
telerik:RadPaneGroup
>
</
telerik:RadPaneGroup
>
</
telerik:RadSplitContainer
>
</
telerik:RadDocking
>
</
Grid
>
<
Grid
Grid.Column
=
"1"
>
<
telerik:RadTreeView
Grid.Row
=
"1"
Margin
=
"5"
VerticalAlignment
=
"Stretch"
AllowDrop
=
"True"
IsLineEnabled
=
"False"
IsEditable
=
"True"
IsDragDropEnabled
=
"True"
>
<
telerik:RadTreeViewItem
Header
=
"Telerik Input 2012 Q2"
IsExpanded
=
"true"
AllowDrop
=
"True"
>
<
telerik:RadTreeViewItem
Header
=
"RadPdfViewer"
AllowDrop
=
"True"
Name
=
"RadPdfViewer"
/>
</
telerik:RadTreeViewItem
>
<
telerik:RadTreeViewItem
Header
=
"Telerik Visualization 2012 Q2"
IsExpanded
=
"true"
>
<
telerik:RadTreeViewItem
Header
=
"RadChartview"
Name
=
"RadChartview"
/>
</
telerik:RadTreeViewItem
>
<
telerik:RadTreeViewItem
Header
=
"Telerik Data 2012 Q2"
IsExpanded
=
"true"
>
<
telerik:RadTreeViewItem
Header
=
"RadDataFilter"
Name
=
"RadDataFilter"
/>
</
telerik:RadTreeViewItem
>
</
telerik:RadTreeView
>
</
Grid
>
</
Grid
>
</
Window
>
Code behind
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Text;
using
System.Threading.Tasks;
using
System.Windows;
using
System.Windows.Controls;
using
System.Windows.Data;
using
System.Windows.Documents;
using
System.Windows.Input;
using
System.Windows.Media;
using
System.Windows.Media.Imaging;
using
System.Windows.Navigation;
using
System.Windows.Shapes;
using
Telerik.Windows.Controls;
using
Telerik.Windows.Controls.TreeView;
namespace
DashboardGrid
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public
partial
class
MainWindow : Window
{
public
MainWindow()
{
InitializeComponent();
}
private
void
RadDocking_Drop(
object
sender, DragEventArgs e)
{
var formats = e.Data.GetFormats();
var data = e.Data.GetData(
"TreeViewDragDropOptions"
);
var item = ((TreeViewDragDropOptions)data).DraggedItems.First();
var splitter = ((RadDocking)sender).Items[0];
RadPaneGroup group = (RadPaneGroup)((RadSplitContainer)splitter).Items[0];
switch
(((RadTreeViewItem)item).Name)
{
case
"RadPdfViewer"
:
group.AddItem(
new
RadPane() { Content =
new
UserControl1(), Header =
"uc1"
}, Telerik.Windows.Controls.Docking.DockPosition.Center);
break
;
case
"RadChartview"
:
group.AddItem(
new
RadPane() { Content =
new
UserControl2(), Header =
"uc2"
}, Telerik.Windows.Controls.Docking.DockPosition.Center);
break
;
case
"RadDataFilter"
:
group.AddItem(
new
RadPane() { Content =
new
UserControl3(), Header =
"uc3"
}, Telerik.Windows.Controls.Docking.DockPosition.Center);
break
;
}
}
private
void
RadTreeView_DragOverTree(
object
sender, DragOverTreeEventArgs e)
{
e.Handled =
true
;
e.IsCanceled =
true
;
}
}
}
Thank you