Kelola ruang di mana Anda dapat memindahkan barang (Silverlight)

Saya sedang memikirkan cara yang lebih baik untuk mengelola "ruang kerja" di aplikasi saya, di mana pengguna dapat memindahkan sesuatu di ruang ini, dan misalnya dapat menggeser.

Bayangkan saya memiliki antarmuka aplikasi, dengan beberapa tombol di sekelilingnya, tampilan pohon, dll. Dan di tengah, sebuah Kanvas dengan beberapa widget yang dapat dipindahkan dan digunakan oleh pengguna, dan dia dapat menggeser ruang ini untuk bergerak di dalamnya.

Untuk panci, saya berpikir untuk menangani MouseLeftButtonDown di ruang ini (yang mengubah boolean "UserMoving" menjadi true), dan di MouseMove, untuk menerapkan terjemahan ke ruang (dari Delta di antara 2 acara), sampai saya mendeteksi MouseLeftButtonUp, untuk mengetahui dia telah berhenti (UserMoving ke false). Masalahnya adalah jika pengguna "tombol kiri mouse ke atas" bukan pada ruang itu sendiri (kanvas), saya tidak akan pernah tahu dia telah melepaskan mouse. Apa cara terbaik untuk mengelola fakta bahwa dia dapat melepaskan pan (atau drag&drop widget) di mana pun dalam aplikasi?

Apakah ada yang sudah mengelola hal seperti itu dan dapat membantu saya?


person Stéphane. D.    schedule 23.01.2011    source sumber


Jawaban (1)


Anda harus menghubungi UIElement.CaptureMouse di Canvas Anda dengan arah mouse ke bawah. Ini akan membuat kanvas tetap menerima peristiwa mouse, bahkan jika pengguna berpindah ke luar wilayahnya.

Saat mouse ke atas, panggil RilisMouseCapture.

person Reed Copsey    schedule 23.01.2011