在Avalonia中实现TreeView节点的拖放操作

时间:2017-06-08 17:24:03

标签: c# .net xaml avaloniaui

如何在TreeView控件中实现拖放行为?一个例子是文件浏览器,用户可以通过拖动将文件从一个文件夹移动到另一个文件夹。

我的XAML中有以下代码:

<TreeView Items="{Binding RootFiles}">
   <TreeView.ItemTemplate>
     <TreeDataTemplate ItemsSource="{Binding Files}">
         <TextBlock Text="{Binding Name}"/>
     </TreeDataTemplate>
   </TreeView.ItemTemplate>
</TreeView>

Check if a given time lies between two times regardless of date

如何使节点可拖动?

1 个答案:

答案 0 :(得分:3)

不幸的是,我们还没有适当的拖放支持,所以你必须手动实现它。

我将描述我是如何通过适应您的情况做类似的事情。

您可以在TreeView控件级别处理鼠标事件。当<div class="msg-ex msg-ex-box"> <div class="msg-ex-overlay"> <button class="msg-ex-cta">Show</button> </div> </div>触发时,您需要检查records = [r for future in futures for r in future.result()] 属性以检测鼠标当前是否在树的一个节点内(使用Parent属性遍历树或只是检查DataContext),如果是,你需要在某处保存所述节点。 当按下其中一个鼠标按钮时MouseDown事件触发时,您需要捕获鼠标,此时您的代码位于&#34;拖动&#34;州。您可以更改TreeView的PointerOverElement属性以向用户提供一些反馈 触发MouseMove时,您需要检测光标相对于其他节点的位置,并相应地在模型支持TreeView中进行更改。