我有一个UWP TreeView,用户可以编辑。我需要坚持他们所做的任何更改。我管理添加和删除,所以这不是问题。但是用户可以拖放TreeViewNodes来更改树的结构。
有没有能让我知道以这种方式进行的更改的事件。
我尝试了各种拖放事件,但没有成功。
答案 0 :(得分:1)
有没有能让我知道以这种方式进行的更改的事件。
TreeViewNode
的拖动操作可以由DragItems
个相对事件(例如DragItemsStarting
和DragItemsCompleted
)检测到。这些事件需要订阅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)
{
}