اسحب الانخفاض داخل WPF Toolwindow في امتداد VS2010 غير مسموح به
-
23-09-2019 - |
سؤال
لدي مشكلة غريبة هنا. لقد قمت بإنشاء مكون إضافي بسيط باستخدام المعالج لمشروع / 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
, ، افعل ما يلي:
- تحقق لمعرفة ما إذا كان يمكنك التعامل مع الإسقاط
- إذا كان الأمر كذلك ، فقم بتعيين
DragEventArgs.Handled
لtrue
وDragEventArgs.Effects
إلى القيمة المناسبة - يتصل
base.OnDragEnter()
في OnDragOver
, ، يجب أن تفعل نفس الشيء مثل OnDragEnter
. إذا فشلت في ضبط Handled
, ، سوف يستولى Visual Studio ولن تتمكن من التعامل مع الانخفاض!
في OnDrop
,
- التعامل مع الهبوط
- جلس
DragEventArgs.Handled
لtrue
- يتصل
base.OnDrop()
تذكر ، لا تتعامل OnDragOver
سيؤدي إلى تولي Visual Studio عملية السحب ، مما يحرمك من القدرة على التعامل معها OnDrop
.