WPF 在列表框中拖放,并带有将放置位置的预览阴影

Jon*_*itz 3 c# wpf drag-and-drop listbox listboxitem

我编写了一个看板用户控件,我可以在其中将一些卡片从一列拖放到另一列(列表框/列表框项目),并且我使用了组件“ https://github.com/punker76/gong-wpf-dragdrop ”去做这个。现在我想添加一个新行为:显示一个预览阴影,卡片将被放置在附件中的动画 gif 中: 插入卡的阴影

动画 gif 显示了执行此操作的 DevExpress 组件。我不想使用 DevExpress,而是想使用另一个开源组件,扩展 gong-wpf-dragdrop 或自己执行此操作。

是否有人已经这样做了或知道一个组件这样做?如果没有,有人有这样做的策略吗?

  • 我已经尝试过装饰器,但是装饰器位于另一层中,并且没有在列表框中显示(也许我做错了什么)
  • 我现在正在尝试的下一件事是向列表框添加一些临时虚拟元素,但要使其工作似乎相当复杂并且需要大量代码(也许我使这件事过于复杂)
  • 有人对策略或组件或元素有更好的想法来使其像动画 gif 中一样工作吗?

我很惊讶没有在谷歌上找到更多关于这个主题的信息。每个人都用 DevExpress 或 Telerik 做这样的事情吗?或者直到现在还没有人发布开源解决方案?

Jon*_*itz 5

我最终实施的解决方案如下:

  • 我在 XAML 中为列表框中包含的每张卡片添加了一个隐藏的底部和顶部阴影(属性:“折叠”)。

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

  • 我创建了一个具有以下功能的自定义 drophandler:

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

如果有人对最终解决方案/代码感兴趣,请将您的兴趣注册为评论,我会提供。如果有人对如何解决这个问题有更好的想法,我也很感兴趣。

最终应用动画gif