or
destination.CopyPropertiesFrom(source);
foreach
(Block b
in
source.Blocks)
destination.Blocks.Add((Block)b.CreateDeepCopy());
<
telerik:RadTreeView
x:Name
=
"TreeView"
Grid.Row
=
"1"
ItemsSource
=
"{Binding Items}"
ItemTemplate
=
"{StaticResource ParentTemplate}"
SelectionMode
=
"Multiple"
SelectedItem
=
"{Binding SelectedItem, Mode=TwoWay}"
IsDragDropEnabled
=
"True"
AllowDrop
=
"False"
>
<
telerik:RadTreeView.ItemContainerStyle
>
<
Style
TargetType
=
"telerik:RadTreeViewItem"
>
<
Setter
Property
=
"IsSelected"
Value
=
"{Binding Path=Select, Mode=TwoWay}"
/>
<
Setter
Property
=
"IsExpanded"
Value
=
"{Binding Path=Expand, Mode=TwoWay}"
></
Setter
>
</
Style
>
</
telerik:RadTreeView.ItemContainerStyle
>
</
telerik:RadTreeView
>
public
class
TelerikTreeViewModel : ReactiveScreen
{
private
ObservableCollection<HierachicalData> _items;
private
HierachicalData _selectedItem;
public
TelerikTreeViewModel()
{
DisplayName =
"Telerik Tree"
;
Items =
new
ObservableCollection<HierachicalData>
{
new
HierachicalData
{
Name =
"Parent"
, Expand =
true
, Select =
true
,
Children =
new
ObservableCollection<HierachicalData>
{
new
HierachicalData {Name =
"Child 1"
},
new
HierachicalData {Name =
"Child 2"
, Select =
true
}
}
},
new
HierachicalData
{
Name =
"Parent 2"
,Expand =
true
,
Children =
new
ObservableCollection<HierachicalData>
{
new
HierachicalData {Name =
"Child 12"
, Select=
true
},
new
HierachicalData {Name =
"Child 22"
}
}
}
};
}
public
ObservableCollection<HierachicalData> Items
{
get
{
return
_items; }
set
{
this
.RaiseAndSetIfChanged(
ref
_items, value); }
}
public
HierachicalData SelectedItem
{
get
{
return
_selectedItem; }
set
{
this
.RaiseAndSetIfChanged(
ref
_selectedItem, value); }
}
}
public
class
HierachicalData : ReactiveObject
{
private
string
_name;
private
ObservableCollection<HierachicalData> _children;
private
bool
_isSelected;
private
bool
_expand;
public
HierachicalData()
{
}
public
string
Name
{
get
{
return
_name; }
set
{
this
.RaiseAndSetIfChanged(
ref
_name, value); }
}
public
ObservableCollection<HierachicalData> Children
{
get
{
return
_children; }
set
{
this
.RaiseAndSetIfChanged(
ref
_children, value); }
}
public
bool
Select
{
get
{
return
_isSelected; }
set
{
this
.RaiseAndSetIfChanged(
ref
_isSelected, value);
}
}
public
bool
Expand
{
get
{
return
_expand; }
set
{
this
.RaiseAndSetIfChanged(
ref
_expand, value); }
}
}
<
Style
x:Key
=
"DraggableListBoxItem"
TargetType
=
"telerik:RadListBoxItem"
>
<
Setter
Property
=
"telerik:DragDropManager.AllowCapturedDrag"
Value
=
"True"
/>
<
Setter
Property
=
"telerik:DragDropManager.AllowDrag"
Value
=
"True"
/>
<
Setter
Property
=
"telerik:DragDropManager.TouchDragTrigger"
Value
=
"TapAndHold"
/>
</
Style
>
<
telerik:RadListBox
x:Name
=
"ListBox"
ItemsSource
=
"{Binding Items}"
ItemTemplate
=
"{StaticResource ListBoxItemDataTemplate}"
ItemContainerStyle
=
"{StaticResource DraggableListBoxItem}"
>
<
telerik:RadListBox.DragDropBehavior
>
<
telerik:ListBoxDragDropBehavior
/>
</
telerik:RadListBox.DragDropBehavior
>
<
telerik:RadListBox.DragVisualProvider
>
<
telerik:ScreenshotDragVisualProvider
/>
</
telerik:RadListBox.DragVisualProvider
>
<
telerik:RadListBox.DropVisualProvider
>
<
telerik:LinearDropVisualProvider
/>
</
telerik:RadListBox.DropVisualProvider
>
</
telerik:RadListBox
>
public
class
DataItemDropViewModel : ReactiveScreen
{
public
DataItemDropViewModel()
{
Items =
new
ObservableCollection<HierachicalData>
{
new
HierachicalData{Name =
"Hello"
},
new
HierachicalData{Name =
"Hello2"
},
new
HierachicalData{Name =
"Hello3"
},
};
}
private
ObservableCollection<HierachicalData> _items;
public
ObservableCollection<HierachicalData> Items
{
get
{
return
_items; }
set
{
this
.RaiseAndSetIfChanged(
ref
_items, value); }
}
}