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

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

يشتمل هذا الموضوع على الأقسام التالية.

  • المتطلبات الأساسية
  • متى تعلم الاحداث كتامة المعالجة
  • "المعاينه" أو أحداث (Tunneling).أحداث bubbling، و الأحداث Hوling
  • معالجات الفئة و معالجات المثيل
  • معالجة فئة الأحداث الموجه بواسطة فئات التحكم الأساسية.
  • إضافة معالجات للمثيلات التي تظهر حتى عندما تحدد الأحداث كتامة المعالجة
  • إخماد أحداث الإدخال عن عمد للحصول على تكوين عنصر التحكم.
  • موضوعات ذات صلة

المتطلبات الأساسية

يمعن هذا الموضوع باتقان على المفاهيم المقدمة في نظرة عامة حول الأحداث الموجهة.

متى تعلم الاحداث كتامة المعالجة

عند تعيين قيمة خاصيةHandled إلى true في بيانات الأحداث لحدث موجه، ويشار إلى ذلك باسم "وضع علامة حدث تمت معالجته". لا يوجد هناك قاعدة مطلقة لـمتى يجب وضع علامة الأحداث الموجهة كتامة المعالجة, إما كتطبيق الكاتب أو ككاتب عنصر تحكم الذي يستجيب للأحداث الموجهة الموجودة أو ينفذ توجيه أحداث جديدة. بالنسبة للجزء الأكبر، مفهوم "تام المعالجة" كما تنفيذه في بيانات حدث الأحداث الموجهة يجب استخدامه كبروتوكول محدود لاستجابات التطبيق الخاص بك إلى الأحداث الموجهة المتنوعة المعروضة في WPF واجهات API وكذلك الأمر بالنسبة إلى أي أحداث موجهة مخصصة. طريقة أخرى للأخذ بعين الاعتبار مشكلة "تامة المعالجة" هى أنه يجب عامة تعليم حدث موجه ما إذا كانت التعليمات البرمجية قد استجابت إلى الحدث موجهة بطريقة هامة و بطريقة كاملة نسبياً. بشكل عام، يجب أن لا يكون هناك أكثر من استجابة واحدة مميزة يتطلب تطبيقات معالج منفصلة لأي تواجد لحدث موجه واحد. إذا كان مطلوباً استجابات اكثر، من ثم يجب أن يتم تنفيذ التعليمات البرمجية الضرورية من خلال منطق تطبيق المتسلسلة داخل معالج واحد بدلاً من استخدام نظام الحدث الموجّه من أجل إعادة توجيهه. مفهوم ما هو "هام" هو أيضاً مدى، ويعتمد على التطبيق أو التعليمات البرمجية. كإرشادات عامة، بعض أمثلة "الاستجابات الهامة" تتضمن : تعيين التركيز، و تعديل الحالة العامة، و تعيين الخصائص التي تؤثر على التمثيل المرئي وإصدار أحداث أخرى جديدة. تتضمن أمثلة لاستجابات غير مميزة: تعديل الحالة الخاصة (دون أي تأثير مرئي، أو التمثيل البرمجي) و تسجيل الأحداث, أو أن تنظر إلى وسائط الحدث و "اختيار عدم الاستجابة لها.

سلوك نظام الأحداث الموجهة يفرض طراز " الاستجابة الهامة " لاستخدام الحالة المعالجة للحدث الموجه، بسبب المعالجات المضافة في XAML أو التوقيع الشائع لل AddHandler لا يتم استدعاؤها استجابة لحدث موجه حيث بيانات الحدث تم بالفعل وضع علامة بتمام معالجتها. يجب أن تمر من خلال الجهد الإضافي لإضافة معالج مع الإصدار من المعلمة handledEventsToo ( AddHandler(RoutedEvent, Delegate, Boolean)) لمعالجة الأحداث الموجهة التي وُضعت عليها علامة بتمام المعالجة بواسطة المشاركين السابقين في توجيه الأحداث.

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

"المعاينه" أو أحداث (Tunneling).أحداث bubbling، و الأحداث Hوling

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

الاتصال بين الأحداث الموجهة نفق و الاتصال الفقاعى تنفذ من قبل التطبيق الداخلي لكيفية رفع أي فئة WPF معطاه الأحداث الخاصة بها الموجهة معرفة، و يكون هذا صحيحاً للأحداث الموجهة المزدوجة الادخال . ولكن ما لم يكن تطبيق مستوى هذه الفئة،لا يوجد اتصال بين الأحداث الموجهة نفق و الأحداث الموجهة بالاتصال الفقاعى مشاركة نظام التسمية: بدون مثل هذا التطبيق سيكونا جهازي للأحداث الموجهة منفصلين تمامًا و لا يمكن رفعهما في تسلسل أو مشاركة بيانات الحدث.

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

معالجات الفئة و معالجات المثيل

الأحداث الموجهة تأخذ بعين الاعتبار نوعين مختلفين من المستمعين للحدث: المستمعين للحدث و المستمعين للمثيل. يوجد مستمعين للفئة بسبب وجود أنواع تسمى EventManagerAPI محددة، RegisterClassHandler ، في مُنشئهم الثابت، أو تحتوي تجاوزاً أسلوب ظاهري لمعالج الفئة لعنصر أساسي مستمعون المثيل هم مثيلات/عناصر فئات معينة حيث تم إرفاق واحد أو أكثر من المعالجات لذلك الحدث الموجه بواسطة استدعاء AddHandler . الأحداث الموجهة WPF الموجودة تجرى مكالمات لل AddHandler كجزء من التفاف الحدث وقت تشغيل اللغة العامة (CLR) تضيف {} وإزالة تطبيقات {} الحدث،و هو أيضاً كيفية تمكين آلية الإرفاق XAML البسيطة لمعالجات الأحداث عبر بناء جملة سمة. لذلك حتى استخدام XAML البسيطة تساوى فى النهاية مكالمةAddHandler .

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

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

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

  • يمكن للفئات المشتقة إضافة معالجة الفئة الموروثة من الفئة الأساسية بواسطة إضافة معالج دون وضع علامة حدث موجه كتام المعالجة لأنه سيتم استدعاء معالج الفئة الأساسية فى وقت ما بعد معالج الفئة المشتقة.

  • يمكن استبدال الفئات المشتقة بمعالج الفئة باضافة معالج فئة يميز الأحداث الموجهة. يجب توخي الحذر مع هذا الأسلوب لأنه محتمل أن يكون قد غير تصميم التحكم المقصود الأساسي في نواحٍ مثل المظهر المرئي، و منطق الحالة، و معالجة الإدخال، ومعالجة الأمر.

معالجة فئة الأحداث الموجه بواسطة فئات التحكم الأساسية.

تحتوي كل عقدة عنصر معيّن على موجه أحداث، لدى وحدات إصغاء الفئة الفرصة للاستجابة الى الأحداث الموجهة قبل أن يمكن لاى مثيل وحدة إصغاء لعنصر. لهذا السبب، يتم أحياناً استخدام معالجات الفئة لمنع الأحداث الموجهة التي لم يرغب فيها تطبيق فئة تحكم معين لينتشر أكثر, أو لتوفير معالجة خاصة بهذا الحدث الموجه كميزة للفئة. على سبيل المثال، قد تظهر فئة ما حدث الفئة الخاصة بها و التي تحتوي على تفاصيل إضافية حول ما تعني بعض شروط مدخلات المستخدم في سياق تلك الفئة المعينة. قد يضع تطبيق الفئة علامة على توجيه الأحداث الأكثر شيوعاً كتام المعالجة. تتم عادةً إضافة معالجات الفئة بحيث لا يتم استدعائها من الأحداث الموجهة حيث بيانات الحدث المشتركة قد تمت بالفعل وضع علامة بتمام المعالجة ، ولكن للحالات الغير معتادة هناك أيضاً توقيع RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean) يقوم بتسجيل معالجات الفئة للاستدعاء حتى عندما يتم وضع علامة على الأحداث الموجهة بتمام المعالجة.

معالج الفئة الخيالى

بعض العناصر،و بخاصة العناصر الأساسية مثل UIElement ، تعرض فارغ عند "تشغيل * الحدث"و"OnPreview * الحدث" الأساليب الظاهرية التي تتوافق مع قائمة الأحداث الموجهة العامة الخاصة بهم . يمكن إبطال هذه الأساليب الظاهرية لتنفيذ معالج فئة لحدث موجه. فئات العنصر الأساسى تسجل هذه الأساليب الظاهرية كمعالج الفئة الخاصة بهم لكل حدث موجهة مثل استخدام RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean) كما تم وصفه سابقاً. أساليب أثناء الشغيل الظاهرى تجعلها أبسط بكثير لتطبيق معالج الفئة للأحداث الموجهة ذات الصلة دون الحاجة لتهيئة المُنشئات الثابتة الخاصة لكل نوع. على سبيل المثال، يمكنك اضافة معالج فئة للحدث DragEnter في أي فئة UIElement مشتقة بواسطة تجاوز أسلوب OnDragEnter الظاهري. أثناء التجاوز,يمكنك معالجة الحدث الموجه أو إظهار أحداث أخرى، أو بدء منطق فئة معين قد تغير خصائص العنصر للمثيلات أو أية تركيبة من هذه الإجراءات. ينبغي عليك بشكل عام استدعاء التنفيذ الأساسي في مثل هذا التجاوز حتى في حالة وضع علامة لمعالج الحدث. استدعاء التطبيق الأساسي المستحسن جداً لأن الأسلوب الظاهرى على الفئة الأساسية. النمط الظاهري المحمي القياسي لاستدعاء التطبيقات الأساسية لكل ظاهر بشكل أساسي يقوم باستبدال و موازاة آلية مشابهة أصلية لمعالجة فئة الحدث الموجه،فى حين تسمى معالجات فئة لكافة الفئات في التسلسل الهرمي يتم استدعائهم لاى فئة على أي مثيل معطى, بدءاً من معالج الفئة المشتقة الأكثر ثم المتابعة لمعالج الفئة الأساسية. يجب فقط حذف استدعاء التطبيق الأساسي إذا كان لدي الفئة الخاصة بك لها محاولة طلب تغيير منطق معالجة الفئة الأساسية. ما إذا كنت تسدعى التنفيذ الأساسي قبل أو بعد التعليمات البرمجية المتجاوزة تعتمد على طبيعة التطبيق الخاص بك.

معالجة فئة ادخال الحدث

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

متى تكتمل معالجة الحدث على، تعتبر وحدات الاصغاء للمثيل.

إضافة معالجات للمثيلات التي تظهر حتى عندما تحدد الأحداث كتامة المعالجة

يوفر أسلوب AddHandlerتحميل زائد معين يسمح لك باضافة معالجات سيتم استدعاؤها بواسطة نظام الأحداث كلما يصل حدث ما إلى عنصر المعالجة في التوجيه، حتى إذا قام معالج أخر بالفعل ضبط بعض بيانات الحدث لوضع علامة ذلك الحدث كتام المعالجة. لا يتم ذلك بشكل عام. وبشكل عام، يمكن كتابة المعالجات لضبط كافة المناطق من التعليمات البرمجية للتطبيق التى قد تتأثر بحدث ما بغض النظر عن أين تتم معالجته في شجرة عنصر ما، حتى اذا كنت ترغب فى عدة نتائج نهائية. أيضاً، عادةً يوجد بالفعل عنصر واحد فقط يحتاج للاستجابة لذلك الحدث، و قد تم بالفعل حدوث منطق التطبيق المناسب لذلك الحدث. ولكن تحميلhandledEventsToo متوفر للحالات الاستثنائية حيث يوجد عنصر آخر في شجرة عنصر ما أو تكوين عنصر تحكم قد قام بالفعل بتعليم حدث كتام المعالجة، ولكن العناصر الأخرى الأعلى أو الأقل في شجرة العنصر (اعتماداً على التوجيه) لا تزال ترغب فى الحصول على استدعاء المعالجات الخاصة بهم.

متى يتم تعليم أحداث معالجة كأنه لم تتم معالجتها.

بشكل عام، الأحداث الموجهة التي يتم وضع علامة بتمام المعالجة يجب أن لا يتم وضع علامة غير معالج ( Handled المعينة الى false) حتى بواسطة مالعالجات التي تعمل على handledEventsToo. ومع ذلك، يكون لدى بعض أحداث الإدخال تمثيلات أحداث عالية-المستوى أو فى مستوى أقل يمكنها أن تتراكب عند مشاهدة حدث عالي-المستوى في موضع واحد في الشجرة و الحدث المنخفض-المستوى في موضع آخر. على سبيل المثال، خذ بعين الاعتبار الحالة حيث مثيل عنصر ما يستمع إلى حدث أساسى عالي المستوى مثل TextInput بينما يستمع عنصر أصل إلى حدث ذى مستوى أقل مثل KeyDown. إذا كان العنصر الأصل يقوم بمعالجة الحدث ذى المستوى المنخفض ، يمكن أن يتم منع الحدث ذى المستوى الأعلى حتى في العنصر المثيل الذى يجب ضمنياً حصوله على الفرصة الأولى لمعالجة الحدث.

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

إخماد أحداث الإدخال عن عمد للحصول على تكوين عنصر التحكم.

السيناريو الرئيسي حيث يتم استخدام معالجة الفئة للأحداث الموجهة من أجل أحداث الادخال وعناصرالتحكو المكونة. عنصر تحكم مكون بالتعريف مؤلف من عدة عناصر تحكم عملية أو فئات أساسية لعنصر التحكم. غالباً ما يرغب كاتب عنصر التحكم للتالي صواب amalgamate كافة الأحداث المحتملة الإدخال أن كل من المكونات الفرعية قد رفع ، بالترتيب صواب تقرير عنصر التحكم بالكامل كمصدر الحدث المفرد. في بعض الحالات قد يرغب الكاتب التحكم فى منع الأحداث من المكونات بالكامل، أو استبدال حدث مكون معرف من قبل الذي يحمل مزيداً من المعلومات أو يتضمن سلوك أكثر تحديداً. المثال المقبول المرئي على الفور إلى أي كاتب مكون هو كيفية معالجةWindows Presentation Foundation (WPF) Buttonلأي حدث للماوس سوف يحل أخيراً إلى الحدث البديهي لأن يكون لكافة الأزرار: حدث Click.

فئة Button الأساسية ( ButtonBase) تشتق من Control والذي بدوره يشتق من FrameworkElement و UIElement ، و الكثير من البنية التحتية للحدث المطلوبة للتحكم فى معالجة الإدخال تتوفر فى مستوى UIElement . في محدد، UIElementمعالجات عام Mouseالأحداث التي تقوم بمعالجة اختبار الدخول لرأس مؤشر ماوس داخل حدود الخاصة به، وتوفير الأحداث مميزة لإجراءات الزر الأكثر شيوعاً، مثل كـ MouseLeftButtonDown. UIElementكما يوفر فارغ الظاهريOnMouseLeftButtonDownكمعالج فئة preregistered الخاصMouseLeftButtonDown، وButtonBaseيتجاوز it. وبشكل مماثل، ButtonBase يستخدم معالجات الفئة لـ MouseLeftButtonUp. في التجاوزات، التي يتم تمرير بيانات الحدث لها، تعلم التطبيقات ذلك RoutedEventArgs المثيل كتامة المعالجتة بواسطة إعداد Handled إلى true ،نفس بيانات الحدث هي ما يستمر بطول الجزء المتبقي للتوجيه إلى معالجات فئة أخرى وكذلك إلى معالجات المثيل أو واضعى الحدث. أيضاً،تجاوز OnMouseLeftButtonUp سيقوم باظهار حدث Click . النتيجة النهائية لمعظم وحدات الانصات ستكون MouseLeftButtonDown و أحداث MouseLeftButtonUp "تختفي" و يتم استبدالها ب Click ، حدث يحمل معنى أكثر لأن المعروف عنه أنه تم إنشاءه من زر صحيح و ليست بعض القطع المركبة من الزر أو من عنصر آخر بالكامل.

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

أحياناً يمكن أن يتداخل سلوك منع ذلك العنصر داخل العناصر الفردية مع بعض التوجهات أكثر عمومية لمنطق معالجة الحدث للتطبيق الخاص بك. على سبيل المثال، إذاكان لسبب ما لدى التطبيق الخاص بك معالج لهذا MouseLeftButtonDown موجود على العنصر الجذرى للتطبيق،ستلاحظ عدم استدعاء أي نقر بالماوس على زر ل MouseLeftButtonDown أو معالجات MouseLeftButtonUp في المستوى الجذر. الحدث نفسه فعلياً فقاعي (مرة أخرى، لا يتم إنهاء توجيهات الحدث بالفعل ولكن يتغير سلوك استدعاء نظام الأحداث الموجهة للمعالج بعد ما يتم وضع علامة بتمام المعالجة). عند وصول الأحداث الموجهة إلى الزر، معالجة الفئة ButtonBase تضع علامة MouseLeftButtonDown تامة المعالجة لأن ذلك تمنى استبدال الحدث Click بمعنى أكبر. لذلك، أي معالج MouseLeftButtonDownقياسي أبعد من التوجيه لن يتم استدعاءه . هناك اثنين من التقنيات التي يمكنك استخدامها للتأكد من أن المعالجات الخاصة بك سيتم استدعاءها في هذه الظروف.

التقنية الأولى هى اضافة المعالج عن عمد باستخدام handledEventsToo توقيع AddHandler(RoutedEvent, Delegate, Boolean). توجد قيود على هذا الأسلوب أن هذه التقنية من أجل ربط معالج أحداث ممكنةة فقط فى التعليمات البرمجية و ليست العلامات. بناء جملة بسيط لتحديد اسم معالج أحداث كـقيمة سمة حدث عبر Extensible Application Markup Language (XAML) لا تمكن هذا السلوك.

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

راجع أيضًا:

المهام

كيفية القيام بما يلي: إنشاء حدث موجه مخصص

المرجع

EventManager

المبادئ

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

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