اسحب الانخفاض داخل WPF Toolwindow في امتداد VS2010 غير مسموح به

StackOverflow https://stackoverflow.com/questions/2158116

سؤال

لدي مشكلة غريبة هنا. لقد قمت بإنشاء مكون إضافي بسيط باستخدام المعالج لمشروع / VSINCENT Integration Package / VSIX مع نافذة أداة. ضمن تلك النافذة ، أريد أن أقوم بسحب/إسقاط بسيط من صندوق القائمة وإسقاطه داخل نفس النافذة. لقد فعلت نفس الشيء في برنامج WPF عادي ، لكن عندما أقوم بذلك في WS Toolwindow ، لا يُسمح بذلك. أبدأ عملية السحب/الإسقاط (التي بدأها أ PreviewMouseLeftButtonDown الحدث) واتصل DragDrop.DoDragDrop() الطريقة ، أحصل على التوقف في التوقيع في وقت واحد. لا يسمح بالسحب.

أيه أفكار؟ القيود الأمنية أو تأثير حقيقة أن عناصر تحكم WPF هذه يتم استضافتها داخل أدوات Windowpane و Old Visual Studio IDE Com الأشياء التي أعتقد ... شكرًا على أي مساعدة!

هل كانت مفيدة؟

المحلول

ساعدني Alin Constantin في Microsoft هنا وقد كتبت منشورًا للمدونة حول كيفية القيام بالسحب/الانخفاض داخل VS2010 بشكل صحيح!

http://alinconstantin.blogspot.com/2010/02/drag-and-drop-in-visal-studio-2010.html


النقاط البارزة ، في حالة تعفن الرابط:

في نافذة الأداة الخاصة بك (USERCONTROL) ، تجاوز OnDragEnter, OnDragOver (الأهمية!) و OnDrop. عدم تجاوز OnDragOver سوف يسبب فشل السحب/الانخفاض.

في OnDragEnter, ، افعل ما يلي:

  1. تحقق لمعرفة ما إذا كان يمكنك التعامل مع الإسقاط
  2. إذا كان الأمر كذلك ، فقم بتعيين DragEventArgs.Handled ل true و DragEventArgs.Effects إلى القيمة المناسبة
  3. يتصل base.OnDragEnter()

في OnDragOver, ، يجب أن تفعل نفس الشيء مثل OnDragEnter. إذا فشلت في ضبط Handled, ، سوف يستولى Visual Studio ولن تتمكن من التعامل مع الانخفاض!

في OnDrop,

  1. التعامل مع الهبوط
  2. جلس DragEventArgs.Handled ل true
  3. يتصل base.OnDrop()

تذكر ، لا تتعامل OnDragOver سيؤدي إلى تولي Visual Studio عملية السحب ، مما يحرمك من القدرة على التعامل معها OnDrop.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top