سؤال

هل هناك طريقة مع WPF للحصول على مجموعة من العناصر الموجودة أسفل الماوس في حدث MouseMove؟

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

المحلول

من "إطلاق العنان لـ WPF"، الصفحة 383:

يمكن للاختبار المرئي للضرب أن يبلغك عن الجميع VisualS الذي يتقاطع مع موقع ، [...] يجب عليك استخدام [... [VisualTreeHelper.]HitTest الطريقة التي تقبل أ HitTestResultCallback مندوب.قبل هذا الإصدار من HitTest العائدات ، يتم استدعاء المندوب مرة واحدة لكل شيء ذي صلة Visual, ، بدءا من أعلى وينتهي في bottommost.

التوقيع على رد الاتصال هذا هو

HitTestResultBehavior Callback(HitTestResult result)

وعليه أن يعود HitTestResultBehaviour.Continue لتلقي المزيد من الزيارات، كما هو موضح أدناه (من الصفحة المرتبطة على MSDN):

// Return the result of the hit test to the callback.
public HitTestResultBehavior MyHitTestResult(HitTestResult result)
{
    // Add the hit test result to the list that will be processed after the enumeration.
    hitResultsList.Add(result.VisualHit);

    // Set the behavior to return visuals at all z-order levels.
    return HitTestResultBehavior.Continue;
}

لمزيد من المعلومات، يرجى الرجوع إلى وثائق MSDN لـ VisualTreeHelper.HitTest.

نصائح أخرى

يمكنك أيضًا تجربة استخدام خاصية Mouse.DirectlyOver للحصول على العنصر العلوي الموجود أسفل الماوس.

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