我如何知道何时通过用户的拖放更改了UWP TreeView

时间:2018-06-27 02:22:59

标签: c# uwp treeview

我有一个UWP TreeView,用户可以编辑。我需要坚持他们所做的任何更改。我管理添加和删除,所以这不是问题。但是用户可以拖放TreeViewNodes来更改树的结构。

有没有能让我知道以这种方式进行的更改的事件。

我尝试了各种拖放事件,但没有成功。

1 个答案:

答案 0 :(得分:1)

  

有没有能让我知道以这种方式进行的更改的事件。

TreeViewNode的拖动操作可以由DragItems个相对事件(例如DragItemsStartingDragItemsCompleted)检测到。这些事件需要订阅TreeViewList,您可以在默认样式TreeView中找到这些事件。例如:

<TreeView >
    <TreeView.Style>
        <Style TargetType="TreeView"> 
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="TreeView">
                        <TreeViewList x:Name="ListControl" AllowDrop="True" DragItemsStarting="ListControl_DragItemsStarting" CanReorderItems="True" CanDragItems="True" ItemContainerStyle="{StaticResource TreeViewItemStyle}" ItemTemplate="{StaticResource TreeViewItemDataTemplate}">
                            <TreeViewList.ItemContainerTransitions>
                                <TransitionCollection>
                                    <ContentThemeTransition/>
                                    <ReorderThemeTransition/>
                                    <EntranceThemeTransition IsStaggeringEnabled="False"/>
                                </TransitionCollection>
                            </TreeViewList.ItemContainerTransitions>
                        </TreeViewList>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </TreeView.Style> 
    <TreeView.RootNodes>
        <TreeViewNode Content="Flavors" IsExpanded="True" >
            <TreeViewNode.Children>
                <TreeViewNode Content="Vanilla"/>
                <TreeViewNode Content="Strawberry"/>
                <TreeViewNode Content="Chocolate"/>
            </TreeViewNode.Children>
        </TreeViewNode>
    </TreeView.RootNodes>
</TreeView>

 private void ListControl_DragItemsStarting(object sender, DragItemsStartingEventArgs e)
 {

 }