Привет! Пишу программу под KonvaJS, и у меня есть дерево в котором я размещаю порядок элементов, и проблема в том что я не знаю как реализовать перетаскивание элементов. Вот XAML моего TreeView, то что там ATreeView это я переопределил что бы была возможность сделать Binding на SelectedItem <classes:ATreeView Width="225" ItemsSource="{Binding KanvaElements}" SelectedItem="{Binding SelectedKanvaElement, Mode=TwoWay}"> <classes:ATreeView.ItemContainerStyle> <Style TargetType="TreeViewItem"> <Setter Property="ItemsSource" Value="{Binding Childrens}"/> <Setter Property="IsExpanded" Value="True"/> <Setter Property="Header"> <Setter.Value> <MultiBinding Converter="{StaticResource TreeItemHeaderMultiConverter}"> <Binding Path="VariableName"/> <Binding Path="ObjName"/> </MultiBinding> </Setter.Value> </Setter> </Style> </classes:ATreeView.ItemContainerStyle> </classes:ATreeView> Код <classes:ATreeView Width="225" ItemsSource="{Binding KanvaElements}" SelectedItem="{Binding SelectedKanvaElement, Mode=TwoWay}"> <classes:ATreeView.ItemContainerStyle> <Style TargetType="TreeViewItem"> <Setter Property="ItemsSource" Value="{Binding Childrens}"/> <Setter Property="IsExpanded" Value="True"/> <Setter Property="Header"> <Setter.Value> <MultiBinding Converter="{StaticResource TreeItemHeaderMultiConverter}"> <Binding Path="VariableName"/> <Binding Path="ObjName"/> </MultiBinding> </Setter.Value> </Setter> </Style> </classes:ATreeView.ItemContainerStyle> </classes:ATreeView> Вот откуда берётся ItemsSource public ObservableCollection<IKonvaElement> KanvaElements { get; set; } = new ObservableCollection<IKonvaElement> { new KonvaStage { Childrens = new List<IKonvaElement> { new KonvaLayer { Childrens = new List<IKonvaElement> { new KonvaRect(), new KonvaCircle(), new KonvaEllipse(), new KonvaWedge() } }, new KonvaLayer(), new KonvaLayer() } } }; Код public ObservableCollection<IKonvaElement> KanvaElements { get; set; } = new ObservableCollection<IKonvaElement> { new KonvaStage { Childrens = new List<IKonvaElement> { new KonvaLayer { Childrens = new List<IKonvaElement> { new KonvaRect(), new KonvaCircle(), new KonvaEllipse(), new KonvaWedge() } }, new KonvaLayer(), new KonvaLayer() } } }; Каждый из этих элементов унаследован от IKonvaElement public interface IKonvaElement { List<IKonvaProperty> Properties { get; set; } List<IKonvaElement> Childrens { get; set; } string ObjName { get; set; } string VariableName { get; set; } } Код public interface IKonvaElement { List<IKonvaProperty> Properties { get; set; } List<IKonvaElement> Childrens { get; set; } string ObjName { get; set; } string VariableName { get; set; } } Как реализовать перетаскивание по дереву? Раньше такого не делал Зарание спасибо!