WPF在带有预览阴影的listbox中的拖放操作

5
我编写了一个看板控件,可以将一些卡片从一个列中拖放到另一个列中(listboxes / listboxitems),并使用组件 "https://github.com/punker76/gong-wpf-dragdrop" 实现。现在我想添加一个新的行为:显示一个预览阴影,就像附带的动画gif中所示的那样: drop shadow of card being inserted 这个动画gif展示了DevExpress组件如何实现这一点。我不想使用DevExpress,而是想使用另一个开源组件,扩展gong-wpf-dragdrop或自己完成这个功能。
有人已经做过这个吗?如果没有,有人有策略来完成这个吗?
  • 我已经尝试过使用装饰器,但是装饰器在另一个层级中,并没有在列表框中占据位置以供显示(也许我做错了什么)
  • 我现在正在尝试的下一件事情是向列表框添加一些临时虚拟元素,但是使其工作似乎相当复杂,并需要大量代码(也许我过于复杂化了这件事)
  • 有人有更好的策略、组件或元素的想法来使它像动画gif中那样工作吗?

我很惊讶在Google上没有找到更多关于这个主题的内容。难道每个人都用DevExpress或Telerik这样的工具吗?还是直到现在没有人发布开源解决方案?

1个回答

6
我最终实现的解决方案如下:
  • 在XAML中,我为列表框中包含的每个卡片添加了一个隐藏的底部和顶部阴影(属性:“Collapsed”)。

  • 我添加了一个依赖属性来管理底部或顶部阴影的可见性。

  • 我创建了一个具有以下功能的自定义拖放处理程序:

    • 如果拖动的元素和下一个元素被悬停,则不显示阴影
    • 当另一个元素被悬停时显示阴影 (顶部当上半部分悬停时,底部当下半部分悬停时)

如果有人对最终的解决方案/代码感兴趣,请在评论中表达您的兴趣,我会提供它。如果有人有更好的解决此问题的方法,我也很感兴趣。

最终应用程序动画GIF


1
如果您能将解决方案发布为公共资源,那将非常棒,这样其他人就可以看到是否有更好的解决方案。因此,我很想看看您的解决方案。 - punker76
1
解决方案已在我的上一条评论中发布,位于 GitHub - gong-wpf-dragdrop issue 148 中的 KanbanExample.zip。请注意,这是针对我的问题和项目的特定解决方案。 - Jonathan Orditz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接