Defining Events (рус: Определяющие события)
В Avalonia, события позволяют пользовательским компонентам UI взаимодействовать с пользователем, а также оповещать его о конкретных действиях и инцидентах. Определяя события, вы предоставляете пользователям ваших компонентов возможность реагировать и отвечать на события внутри собственных приложений. В текущем документе будет представлено руководство по определению событий для ваших компонентов.
Routed Event (рус: Перенаправленное событие)
Перенаправленные события предоставляют механизм обработки событий, которые могут перемещаться (или перенаправляться) по дереву компонентов, что позволяет нескольких компонентам реагировать на одно и то же событие.
Перенаправленные события обладают следующими ключевыми функциями:
-
Event Routing (рус: Перенаправление событий): Перенаправляемые события могут распространяться вверх (
bubbling (рус: пузырение)
) или вниз (tunneling (рус: туннелирование)
) по дереву, что позволяет компонентам на разных уровнях обрабатывать одно и тоже событие. Такой подход обеспечивает более гибкую и централизованную обработку событий. -
Event Handlers (рус: Обработчики событий): Перенаправляемые события используют обработчики событий для реагирования на них. Обработка событий связана с определенными компонентами или может быть добавлена на более высоких уровнях визуального дерева для обработки событий от нескольких компонентов.
-
Handled State (рус: Обрабатываемое состояние): Перенаправляемые события имею свойство
Handled
, которое можно использовать для пометки события какhandled (рус: обработанное)
, что предотвращает дальнейшее распостранение. Такой способ позволяет осуществлять детальный контроль над обработкой событий. -
Event Routing Strategies (рус: Стратегия перенаправления событий): Avalonia поддерживает различные стратегии перенаправления для перенаправляемых событий, такие как
bubbling (рус: пузырение)
,tunneling (рус: туннелирование)
и прямое перенаправление. Эти стратегии определяют порядок, в котором компоненты получают и обрабатывают события. Перенаправляемые события особенно полезны, когда вам требуется обрабатывать события, возникающие внутри вложенных компонентов или если вы хотите централизованную логику обработки событий выше по визуальному дереву.