Skip to main content

ferroui_xaml_interactions/core/
event_trigger_behavior.rs

1//! Port of `Core/EventTriggerBehavior.cs`.
2
3use ferroui_base::{ferro_class, ferro_class_info, instantiate, FerroObjectImpl, Ref, StyledElementImpl};
4use ferroui_xaml_interactivity::{EventTriggerBase, EventTriggerBaseImpl, StyledElementBehaviorImpl};
5
6/// A behavior that listens for a specified event on its source and executes its actions when that
7/// event is fired.
8///
9/// The event is found by name on the source (see [`EventTriggerBase`]): a routed event of its
10/// class, a plain event its markup metadata declares, or an event of the registry of event
11/// handlers. The default event, `AttachedToVisualTree`, fires when a control without a parent is
12/// attached to the visual tree.
13#[repr(C)]
14pub struct EventTriggerBehavior {
15    base: EventTriggerBase,
16}
17
18ferro_class!(EventTriggerBehavior: EventTriggerBase);
19ferro_class_info!(EventTriggerBehavior { new: EventTriggerBehavior::new });
20ferroui_base::ferro_impl_classes!(
21    EventTriggerBehavior: FerroObjectImpl,
22    StyledElementImpl,
23    StyledElementBehaviorImpl,
24    EventTriggerBaseImpl
25);
26
27impl EventTriggerBehavior {
28    /// Creates the class data; see [`ferroui_base::FerroObject::construct`].
29    pub fn construct() -> Self {
30        Self { base: EventTriggerBase::construct() }
31    }
32
33    /// Creates a trigger.
34    pub fn new() -> Ref<Self> {
35        instantiate(Self::construct())
36    }
37}