WPF احصل على العنصر (العناصر) تحت الماوس
-
09-06-2019 - |
سؤال
هل هناك طريقة مع WPF للحصول على مجموعة من العناصر الموجودة أسفل الماوس في حدث MouseMove؟
المحلول
من "إطلاق العنان لـ WPF"، الصفحة 383:
يمكن للاختبار المرئي للضرب أن يبلغك عن الجميع
Visual
S الذي يتقاطع مع موقع ، [...] يجب عليك استخدام [...[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 للحصول على العنصر العلوي الموجود أسفل الماوس.