ฉันกำลังทำงานกับแอปพลิเคชัน WPF ที่ใช้การลากและวางจำนวนมาก ทุกอย่างทำงานได้ดี ยกเว้น ListBoxItems ฉันมีกล่องรายการพร้อม ListBoxItems ที่สามารถลากไปยังเป้าหมายอื่นได้ (StackPanel) ปัญหาคือ เมื่อฉันลากเคอร์เซอร์ไปนอก ListBox ฉันไม่เห็น Adorner ที่ฉันตั้งค่าไว้ด้วย ListBoxItem?
ฉันรู้ว่านี่เป็นปัญหาที่พบบ่อย แต่ฉันไม่แน่ใจว่าจะแก้ไขได้อย่างไร มีบางอย่างที่ฉันต้องทำเพื่อให้ลากออกไปนอกตัวควบคุมกล่องรายการหรือไม่
ด้านล่างนี้ฉันได้แนบรูปลักษณ์ของ UI ไปแล้ว อย่างที่คุณเห็นมีกล่องรายการอยู่ที่ด้านซ้ายล่าง เมื่อฉันลากรายการ adorner จะปรากฏขึ้น และตามเคอร์เซอร์ไปรอบๆ ขณะที่เคอร์เซอร์อยู่เหนือกล่องรายการ แต่ถ้าฉันพยายามย้ายเคอร์เซอร์ออกจากกล่องรายการ ดูเหมือนว่า Adorner เกือบจะไปอยู่ภายใต้การควบคุมอื่นๆ (zIndex?) .
แก้ไข - วิธีแก้ไข ฉันได้เปลี่ยนรหัสเพื่อจัดการ AdornerLayer ที่สัมพันธ์กับหน้าต่างซึ่งตรงข้ามกับ AdornedElement
ฉันจึงเปลี่ยน
layer = AdornerLayer.GetAdornerLayer(_originalElement);
to
layer = AdornerLayer.GetAdornerLayer(this);
วิธีนี้ช่วยแก้ปัญหาของ ScrollViwer ที่ตัด AdornerLayer