أحداث المعاينة

‏‫أحداث المعاينة‬ تعرف أيضاً بأحداث النفق، هي أحداث موجهة حيث تنتقل اتجاه التوجيه من جذر التطبيق باتجاه العنصر الذي يقوم بتنفيذ الحدث و إنشاء تقرير كمصدر في بيانات الحدث. لا تدعم كافة وحدات سيناريو الحدث أو تتطلب أحداث معاينة; هذا الموضوع يصف الحالات حيث تتواجد أحداث المعاينة، كيفية معالجة التطبيقات أو المكونات هذه الأحداث و حالات إنشاء أحداث المعاينة في مكونات مخصصة أو فئات قد تكون مناسبة.

أحداث المعاينة و الإدخال

عند معالجة أحداث المعاينة بشكل عام، يجب الحذر عند وضع علامة أحداث المعالجة في بيانات الحدث. معالجة أحداث المعاينة على أي عنصر غير العنصر الذي قام بتنفيذه(العنصر الذي يتم الإعلام عنه كمصدر في بيانات الحدث) له تأثير عدم توفير للعنصر الفرصة لمعالجة الحدث. أحياناً هذه هي النتيجة المطلوبة, بشكل خاص في حالة وجود العناصر في علاقات ضمن تكوين عنصر تحكم.

لأحداث الإدخال خاصة، أحداث المعاينة أيضاً تشارك مثيلات بيانات الحدث مع الأحداث الفقاعية المكافئة. إذا كنت تستخدم معالج فئة أحداث المعاينة لوضع علامة على حدث الإدخال المعالج, لن يتم استدعاء معالج فئة أحداث الإدخال الفقاعية. أو إذا كنت تستخدم معالج مثيل أحداث المعاينة لوضع علامة على الحدث المعالج, لن يتم عادةً استدعاء معالجات الحدث الفقاعي. معالجات الفئة أو مثيل المعالجات يمكن تسجيلهم أو إرفاقهم بخيار لاستدعائه حتى إذا تم وضع علامة على الحدث كمعالج لكن لا يتم استخدام هذا الأسلوب بشكل شائع.

للحصول على مزيد من المعلومات حول معالجة الفئة و كيفية ارتباطه بأحداث المعاينة, راجع وضع علامة على توجيه الأحداث كمعالجة و معالجة الفئة.

تعمل حول منع الأحداث بواسطة عناصر التحكم

سيناريو واحد حيث أحداث المعاينة شائعة الاستخدام من أجل معالجة عنصر التحكم المركب لأحداث الإدخال. في بعض الأحيان قد يمنع كاتب عنصر التحكم أحد الأحداث المعينة من عنصر التحكم الخاص بهم, ربما من أجل استبدال الحدث المعرف من قبل المكون الذي يحمل مزيد من المعلومات أو يتضمن سلوك أكثر تحديداً. على سبيل المثال، Windows Presentation Foundation (WPF) Button يمنع MouseLeftButtonDown و MouseLeftButtonDown الأحداث الفقاعية المنفذة من قبل Button أو العنصر المركبة من أجل إلتقاط الماوس و تنفيذ Clickالحدث الذي يتم تنفيذه دائما بواسطة Buttonنفسه. الحدث و بياناته يكملو متابعة التوجيه ، ولكن بسبب Button يعلم بيانات الحدث كـ Handled ، فقط معالجات الحدث بشكل خاص المشار إليها فإنها يجب أن تعمل في handledEventsToo يتم استدعاء حالة. إذا عناصر أخرى باتجاه جذر التطبيق الخاص بك لا تزال تريد فرصة لمعالجة حدث منع التحكم ، بديل واحد هو إرفاق معالجات في التعليمات البرمجية مع handledEventsToo المحدد ك true. ولكن غالباً ما يكون أسهل أسلوب هو تغيير اتجاه التوجيه المعالج ليكون مكافئ المعاينة لحدث الإدخال. على سبيل المثال، إذا كان عنصر تحكم يمنع MouseLeftButtonDown ، حاول إرفاق معالج لهذا PreviewMouseLeftButtonDown بدلاً من ذلك. تعمل هذه التقنية فقط مع أحداث إدخال العنصر الأساسي مثل MouseLeftButtonDown. أحداث الإدخال هذه تقوم باستخدام أزواج النفق/الفقاعية, تنفذ كلا الأحداث و تشارك بيانات الحدث.

كل من هذه التقنيات لها تأثيرات جانبية أو قيود. تأثير جانبي لمعالجة حدث المعاينة هو أن معالجة الحدث في هذه النقطة قد يعطل المعالجات التي من المتوقع أن تعالج الأحداث الفقاعية و لذلك القيود أن عادة ليست فكرة جيدة وضع علامة على الحدث المعالج أثناء جزء المعاينة من التوجيه. قيود handledEventsToo تقنية أنه لا يمكنك تحديد handledEventsToo معالج في XAML كسمة، يجب تسجيل معالج الأحداث في التعليمات البرمجية بعد الحصول على كائن مرجع إلى العنصر حيث يمكن إرفاق المعالج.

راجع أيضًا:

المبادئ

وضع علامة على توجيه الأحداث كمعالجة و معالجة الفئة

نظرة عامة حول الأحداث الموجهة