[C# WPF] Как реализовать перетаскивание в TreeView

_ZnZ_

Местный
С нами с
7 Авг 2015
Сообщения
97
Симпатии
36
Баллы
90
#1
Привет!
Пишу программу под 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>
Вот откуда берётся 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()
                }
            }
        };
Каждый из этих элементов унаследован от IKonvaElement
Код:
public interface IKonvaElement
    {
        List<IKonvaProperty> Properties { get; set; }
        List<IKonvaElement> Childrens { get; set; }

        string ObjName { get; set; }
        string VariableName { get; set; }
    }
Как реализовать перетаскивание по дереву? Раньше такого не делал
Зарание спасибо!