如何在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
如何使节点可拖动?
答案 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中进行更改。