ما مدى سهولة تنفيذ السحب والإفلات في Silverlight؟

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

  •  03-07-2019
  •  | 
  •  

سؤال

أنا جديد على Silverlight - لقد رأيت دروس وكل ما أبحث عنه هو خطوات عالية المستوى مطلوبة لتنفيذ السحب والإفلات وربما القليل من التعليمات البرمجية (الزائفة) فقط للحصول على فكرة.

أي مساعدة موضع تقدير!

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

المحلول

هل يمكنك أن تشرح بالضبط ما تريد تحقيقه من خلال السحب والإفلات في Silverlight؟الإجابة العليا في السؤال الذي ربطته بروابط هذه الصفحة:http://www.adefwebserver.com/DotNetNukeHELP/Misc/Silverlight/DragAndDropTest/

يحتوي هذا على نموذج مشروع مع مصدر يقوم بتنفيذ السحب والإفلات (بالصدفة، استنادًا إلى نموذج قمت بإنشائه للإصدار التجريبي 1 من Silverlight 2 :-) ).ماذا عن هذا الرمز غير المناسب لاحتياجاتك؟

يحرر:سيبدو الهيكل الأساسي لتنفيذ السحب والإفلات كما يلي:

bool isDragging = false;

void elementMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
    if (element.CaptureMouse())
    {
        isDragging = true;
        element.MouseMove += elementMouseMove;
        //start drag code goes here
    }
}

void elementMouseMove(object sender, MouseEventArgs e)
{
    //Drag code goes here
}

void element_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
    if (isDragging)
    {
        element.ReleaseMouseCapture();
        isDragging = false;
        element.MouseMove -= elementMouseMove;

        //Drop code goes here
    }
}

قم بإضافة معالجات MouseLeftButtonUp/Down إلى العنصر الذي تريد سحبه.

في معالج الأحداث MouseMove، قم بإضافة التعليمات البرمجية التي تريد تنفيذها أثناء السحب:على سبيل المثالقم بتغيير Canvas.Top و Canvas.Left لمطابقة موضع الماوس.يمكنك الحصول على موضع الماوس من وسيطات الحدث.ربما ترغب في الحصول على الموضع بالنسبة لحاوية العناصر.

في معالج الأحداث MouseLeftButtonUp، أضف التعليمات البرمجية التي سيتم تنفيذها عند حدوث "الإفلات".على سبيل المثال، قد ترغب في إنشاء "سلة المحذوفات" التي يمكن سحب العناصر إليها.في هذه الحالة، قد ترغب في معرفة العناصر الموجودة أسفل الماوس عند نقطة الإسقاط.يمكنك استخدام VisualTreeHelper.FindElementsAtHostCoerates، لتمرير موضع الماوس بالنسبة إلى جذر التطبيق (استخدم e.GetPosition(null)).ثم إذا تم إرجاع عنصر "سلة المحذوفات" الخاص بك بواسطة FindElementsInHostCoerates، فيجب عليك تنفيذ الإجراء المناسب.

هل هذا يساعد في الإجابة على سؤالك؟

نصائح أخرى

لا MouseLeftButtonDown حيث من المفترض أن يتم البدء في التقاط، وليس على mouseleftbuttonup؟

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