我有一个WPF 4应用程序,我使用标准DragDrop.DoDragDrop
方法实现拖放,但我使用touch而不是Mouse事件来做。
我的网格XAML(我正在拖动)如下:
<Grid x:Name="LayoutRoot"
ManipulationStarting="ManipulationStarting"
ManipulationDelta="ManipulationDelta"
ManipulationCompleted="ManipulationCompleted"
IsManipulationEnabled="True">
<!-- children in here -->
</Grid>
现在背后的代码是这样的:
private void ManipulationStarting(object sender, ManipulationStartingEventArgs e)
{
e.ManipulationContainer = this;
e.Handled = true;
}
private void ManipulationDelta(object sender, ManipulationDeltaEventArgs e)
{
e.Handled = true;
DragDrop.DoDragDrop(this, new DataObject(GetType(), this), DragDropEffects.Move);
}
private void ManipulationCompleted(object sender, ManipulationCompletedEventArgs e)
{
//completed stuff
}
但是当我尝试用一根手指拖动而另一根手指(例如,不同的手,这会模拟两个人)时,第二次触摸似乎没有正确注册,事实上,似乎窗户认为我的两个手指正在试图缩放(就像捏手势)......
有没有人知道解决这个问题的方法?
非常感谢 标记
答案 0 :(得分:4)
对于多点触控,您将需要使用Surface Toolkit for Windows Touch。它包括适用于多点触控场景的拖放式框架。它包括drag-and-drop framework。该链接包括几个操作方案。
答案 1 :(得分:1)
虽然这只是一个有根据的猜测,但我会说DragDrop.DoDragDrop()
无法并行处理多个拖动客户。
指数:
DoDragDrop()
的实施是静态的DoDragDrop()
的通话阻止,直至发生跌落或被取消但是,如果有人能在这件事上纠正我,我会很高兴,因为我目前也正在搜索适合触摸支持的DND API。
此致 七