Pertanyaan WPF 4 multi-touch drag and drop


Saya memiliki aplikasi WPF 4 di mana saya telah menerapkan Drag and Drop menggunakan standar DragDrop.DoDragDrop pendekatan, tapi aku melakukannya dengan menggunakan sentuhan bukan peristiwa Mouse.

XAML saya untuk Grid saya (yang menyeret Im) adalah sebagai berikut:

<Grid x:Name="LayoutRoot" 
      ManipulationStarting="ManipulationStarting" 
      ManipulationDelta="ManipulationDelta" 
      ManipulationCompleted="ManipulationCompleted"
      IsManipulationEnabled="True">
    <!-- children in here -->
</Grid>

Sekarang kode di belakangnya seperti ini:

    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
    }

TAPI ketika saya mencoba untuk menyeret dengan satu jari sambil menyeret dengan jari lain (tangan yang berbeda misalnya, yang akan mensimulasikan dua orang) sentuhan kedua tampaknya tidak terdaftar dengan benar, ternyata, tampaknya jendela berpikir bahwa dua jari saya mencoba untuk skala (seperti gerakan mencubit) ...

Adakah yang tahu cara untuk mengatasi ini?

Terima kasih banyak Menandai


5
2017-07-07 00:13


asal


Jawaban:


Untuk multi-touch, Anda akan ingin menggunakan Surface Toolkit untuk Windows Touch. Ini termasuk kerangka drag-and-drop yang cocok untuk skenario multi-touch. Ini termasuk a kerangka drag-and-drop. Tautan itu mencakup beberapa skenario bagaimana caranya.


4
2017-08-29 19:25



Meskipun ini hanya tebakan, saya akan mengatakan itu DragDrop.DoDragDrop() tidak mampu menangani beberapa tamu seret secara paralel.

Indeks:

  • Tidak ada kemungkinan untuk mengirimkan ID sentuhan ke metode (yang akan diperlukan untuk membedakan gerakan seret yang sedang berlangsung)
  • Implementasi dari DoDragDrop() bersifat statis
  • Panggilan dari DoDragDrop() memblokir hingga drop terjadi atau dibatalkan
  • Ini didasarkan pada versi OLE drag and drop (yang tidak diperbarui untuk Win7)

Namun, saya akan senang jika seseorang dapat mengoreksi saya dalam masalah ini, karena saat ini saya juga mencari DND API yang cocok untuk dukungan sentuh.

Salam, Tujuh


1
2017-08-12 12:55