WPF - 使DragDrop和ManipulationEnabled共存

时间:2014-03-12 11:51:41

标签: c# .net wpf drag-and-drop multi-touch

我在WPF触控应用程序中遇到了一些不寻常的设计问题。

我有一个 UserControl ,用于保存图像,我允许用户通过设置使用多点触控在触摸表面上自由移动,调整大小和旋转:

  

isManipulationEnabled = true

然后挂钩ManipulationStartingManipulationDeltaManipulationCompleted的活动。

这一切都很好并且运行良好,但是现在我想为用户添加将此控件拖动到另一个控件上的WrapPanel的能力,该控件有一个图像文件列表,并添加此图像列表。

我尝试通过在DragDrop事件上调用DragDrop.DoDragDrop()来使用ManipulationDelta事件,但它会锁定UI和控件,直到发生丢弃,这不是我想要的。

有没有办法在不编写我自己的命中测试代码的情况下正确执行此操作?我在VS 2013上使用WPF 4.0和.NET 4.5,我不确定Surface SDK是否会在这种情况下帮助我(也不能正确安装/加载到VS2013)

1 个答案:

答案 0 :(得分:0)

找到我的解决方案:使用VisualTreeHelper.HitTest并在ManipulationDelta的事件处理程序中调用HitTest,然后使用您自己的逻辑来处理拖动操作。使用ManipulationCompleted事件再次检查命中测试以完成删除