5

標準的なアプローチを使用してドラッグアンドドロップを実装したWPF4アプリケーションがありますがDragDrop.DoDragDrop、マウスイベントの代わりにタッチを使用して実装しています。

グリッド用のXAML(Imドラッグ)は次のとおりです。

<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
    }

しかし、すでに別の指でドラッグしているときに1本の指でドラッグしようとすると(たとえば、2人の人をシミュレートする別の手)、2番目のタッチが正しく登録されていないようです。実際、Windowsは私の2本の指がスケーリングしようとしています(ピンチジェスチャのように)...

誰かがこれを回避する方法を知っていますか?

どうもありがとうマーク

4

2 に答える 2

4

マルチタッチの場合は、Surface Toolkit forWindowsTouchを使用する必要があります。マルチタッチシナリオに適したドラッグアンドドロップフレームワークが含まれています。ドラッグアンドドロップフレームワークが含まれています。そのリンクには、いくつかのハウツーシナリオが含まれています。

于 2010-08-29T19:25:08.567 に答える
1

これは単なる知識に基づく推測ですが、DragDrop.DoDragDrop()複数のドラッグゲストを並行して処理することはできません。

インデックス:

  • タッチIDをメソッドに渡す可能性はありません(進行中のドラッグジェスチャを区別するために必要です)
  • の実装DoDragDrop()は静的です
  • DoDragDrop()ドロップが発生するかキャンセルされるまで、の呼び出しはブロックされています
  • これは、ドラッグアンドドロップのOLEバージョン(Win7用に更新されていません)に基づいています

ただし、現在、タッチサポートに適したDND APIも検索しているので、誰かがこの問題について私を訂正してくれれば幸いです。

よろしく、セブン

于 2010-08-12T12:55:22.473 に答える