gpt4 book ai didi

wpf - 在 TreeView 中拖放,在节点之间插入

转载 作者:行者123 更新时间:2023-12-04 19:16:52 24 4
gpt4 key购买 nike

我正在通过 XmlDataProvider 填充 TreeView,并且已经实现了拖放功能,因此我可以四处移动节点,并从其他位置放置节点。

但我只实现了最简单的形式;当你放下时,它作为一个子节点插入到它被放下的节点上。此功能按预期工作。但我也希望能够在两个节点之间放置一个项目,以便它成为一个兄弟节点。

我应该如何着手解决这个问题?

目前我正在使用带有 StackPanel 的 HierarchicalDataTemplate:

<HierarchicalDataTemplate x:Key="XmlTreeTemplate">
<HierarchicalDataTemplate.ItemsSource>
<Binding XPath="child::node()" />
</HierarchicalDataTemplate.ItemsSource>
<StackPanel
AllowDrop="True"
DragEnter="StackPanelDragEnter"
DragLeave="StackPanelDragLeave"
DragOver="StackPanelDragOver"
...

Drop 事件发生在 TreeView 上。

最佳答案

在 DragOver 期间,您可以使用此方法确定鼠标位置是在 TreeView 节点上方还是下方:

    public static bool IsInFirstHalf(FrameworkElement container, Point mousePosition, Orientation orientation)
{
if (orientation == Orientation.Vertical)
{
return mousePosition.Y < container.ActualHeight / 2;
}
return mousePosition.X < container.ActualWidth / 2;
}

然后在节点之前/之后显示一个插入装饰器。
在 Drop 之前(父节点的子节点)或之后(兄弟节点)创建一个新节点。

关于wpf - 在 TreeView 中拖放,在节点之间插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8297384/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com