【问题标题】:WPF 4 multi-touch drag and dropWPF 4 多点触控拖放
【发布时间】:2011-03-12 14:08:56
【问题描述】:

我有一个 WPF 4 应用程序,我在其中使用标准 DragDrop.DoDragDrop 方法实现了拖放,但我使用的是触摸而不是鼠标事件。

我的网格(我正在拖动)的 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
    }

但是当我尝试用一​​根手指拖动而已经用另一根手指拖动(例如不同的手,这将模拟两个人)时,第二次触摸似乎没有正确注册,事实上,似乎 windows 认为我的两个手指正在尝试缩放(像捏手势)...

有人知道解决这个问题的方法吗?

非常感谢 标记

【问题讨论】:

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


    【解决方案1】:

    虽然这只是一个有根据的猜测,但我想说DragDrop.DoDragDrop() 无法同时处理多个拖动来宾。

    指数:

    • 不可能将触摸 ID 传递给方法(这对于区分正在进行的拖动手势是必要的)
    • DoDragDrop() 的实现是静态的
    • DoDragDrop() 的调用被阻塞,直到丢弃发生或被取消
    • 它基于 OLE 版本的拖放(未针对 Win7 进行更新)

    但是,如果有人能在这件事上纠正我,我会很高兴,因为我目前也在寻找适合触摸支持的 DND API。

    问候, 七

    【讨论】:

      【解决方案2】:

      对于多点触控,您将需要使用 Surface Toolkit for Windows Touch。它包括一个适用于多点触控场景的拖放框架。它包括一个drag-and-drop framework。该链接包含几个操作方法场景。

      【讨论】:

      猜你喜欢
      • 2014-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-03
      相关资源
      最近更新 更多