Skip to main content

Behavior

Struct Behavior 

Source
pub struct Behavior { /* private fields */ }
Expand description

A base class for behaviors, implementing the basic plumbing of IBehavior.

The class is abstract: deriving classes override the members of BehaviorImpl.

Deviation (DEVIATIONS.md, Behaviors): the reference names the hooks of the attachment of the host to the logical tree OnAttachedToLogicalTree / OnDetachedFromLogicalTree; the styled element behaviors would hide the members of the same name of the styled element, so both families name them on_attached_to_logical_tree_event and on_detached_from_logical_tree_event, as the reference names the other host hooks (OnInitializedEvent, OnDataContextChangedEvent).

Implementations§

Source§

impl Behavior

Source

pub const TYPE: &'static TypeInfo = <Behavior as ::ferroui_base::StaticType>::TYPE

The runtime type of this class.

Source

pub fn to_ref(&self) -> Ref<Behavior>

Returns a strong reference to this object.

Source§

impl Behavior

Source

pub fn on_attached(&self)

Called after the behavior is attached to the associated object.

Override this to hook up functionality to the associated object.

Source

pub fn on_detaching(&self)

Called when the behavior is being detached from its associated object.

Override this to unhook functionality from the associated object.

Source

pub fn on_attached_to_visual_tree(&self)

Called after the associated object is attached to the visual tree.

Invoked only when the associated object is a visual.

Source

pub fn on_detached_from_visual_tree(&self)

Called when the associated object is being detached from the visual tree.

Invoked only when the associated object is a visual.

Source

pub fn on_attached_to_logical_tree_event(&self)

Called after the associated object is attached to the logical tree (OnAttachedToLogicalTree).

Invoked only when the associated object is a styled element.

Source

pub fn on_detached_from_logical_tree_event(&self)

Called when the associated object is being detached from the logical tree (OnDetachedFromLogicalTree).

Invoked only when the associated object is a styled element.

Source

pub fn on_loaded(&self)

Called after the associated object is loaded.

Invoked only when the associated object is a control.

Source

pub fn on_unloaded(&self)

Called when the associated object is unloaded.

Invoked only when the associated object is a control.

Source

pub fn on_initialized_event(&self)

Called when the associated object is initialized.

Invoked only when the associated object is a styled element.

Source

pub fn on_data_context_changed_event(&self)

Called when the data context of the associated object changed.

Invoked only when the associated object is a styled element.

Source

pub fn on_resources_changed_event(&self)

Called when the resources of the associated object changed.

Invoked only when the associated object is a styled element.

Source

pub fn on_actual_theme_variant_changed_event(&self)

Called when the actual theme variant of the associated object changed.

Invoked only when the associated object is a styled element.

Source§

impl Behavior

Source

pub fn is_enabled_property() -> &'static StyledProperty<bool>

Identifies the IsEnabled property.

Source§

impl Behavior

Source

pub fn construct() -> Self

Creates the class data; see FerroObject::construct.

Source

pub fn associated_object(&self) -> Option<Ref<FerroObject>>

Gets the object to which the behavior is attached.

Source

pub fn is_enabled(&self) -> bool

Gets or sets a value indicating whether this instance is enabled.

Source

pub fn set_is_enabled(&self, value: bool)

Source

pub fn attach(&self, associated_object: impl Into<Nullable<FerroObject>>)

Attaches the behavior to the specified object.

§Panics

Panics if the behavior is attached to another object.

Source

pub fn detach(&self)

Detaches the behaviors from the associated_object.

Methods from Deref<Target = FerroObject>§

Source

pub fn dispatcher(&self) -> &Arc<Dispatcher> ⓘ

Returns the Dispatcher that this object is associated with: the dispatcher of the thread that owns the object.

Source

pub fn check_access(&self) -> bool

Returns whether the calling thread is the thread that owns this object.

Source

pub fn verify_access(&self)

Checks that the calling thread is the thread that owns this object.

§Panics

Panics when it is not.

Source

pub fn to_ref(&self) -> Ref<FerroObject>

A strong reference to this object.

Source

pub fn to_weak(&self) -> WeakRef<FerroObject>

A weak reference to this object.

Source

pub fn get_type(&self) -> &'static TypeInfo

The runtime type of the object.

Source

pub fn is<T>(&self) -> bool
where T: ObjectType,

Whether the object is of class T or a class derived from it.

Source

pub fn downcast_ref<T>(&self) -> Option<&T>
where T: ObjectType,

Returns the object viewed as class T if it is one.

Source

pub fn on_property_changed(&self, change: &FerroPropertyChangedEventArgs<'_>)

Invokes the on_property_changed virtual member.

Source

pub fn inheritance_parent(&self) -> Option<Ref<FerroObject>>

The parent object that inherited property values are inherited from.

Source

pub fn set_inheritance_parent(&self, value: impl Into<Nullable<FerroObject>>)

Sets the parent object that inherited property values are inherited from.

Source

pub fn clear_value<T>(&self, property: &'static StyledProperty<T>)
where T: PropertyValue,

Clears a property’s local value.

Source

pub fn get_value<T>(&self, property: &'static StyledProperty<T>) -> T
where T: PropertyValue,

Gets a property value.

Source

pub fn get_base_value<T>( &self, property: &'static StyledProperty<T>, ) -> Option<T>
where T: PropertyValue,

Gets a property’s base value: the value excluding animated values. Returns None if the value comes from inheritance or the default.

Source

pub fn is_animating(&self, property: &FerroProperty) -> bool

Checks whether a property is animating.

Source

pub fn is_set(&self, property: &FerroProperty) -> bool

Checks whether a styled property has a value assigned to it or a binding targeting it.

Source

pub fn has_local_value_binding(&self, property: &FerroProperty) -> bool

Whether a local-value binding targets this property, including direct properties and observable bindings. Unlike is_set, this does not rely on a styled property’s effective-value entry. It does not inspect bindings at style/template priorities.

Source

pub fn set_value<T>(&self, property: &'static StyledProperty<T>, value: T)
where T: PropertyValue,

Sets a property value with local value priority.

Source

pub fn set_value_with_priority<T>( &self, property: &'static StyledProperty<T>, value: T, priority: BindingPriority, ) -> Option<Rc<dyn IDisposable>>
where T: PropertyValue,

Sets a property value with the given priority. For priorities other than local value, disposing the returned handle removes the value.

Source

pub fn set_current_value<T>( &self, property: &'static StyledProperty<T>, value: T, )
where T: PropertyValue,

Sets the value of a property without changing its value source.

This is used by a component that programmatically sets the value of one of its own properties without disabling an application’s declared use of the property: the effective value changes, but existing bindings and styles continue to work. The new value has the property’s current priority.

Source

pub fn bind_binding( &self, property: &'static FerroProperty, binding: &dyn BindingBase, ) -> Rc<dyn BindingExpressionBase>

Binds a property to a binding. Returns the binding expression which represents the binding instance on this object.

Source

pub fn bind_binding_with_anchor( &self, property: &'static FerroProperty, binding: &dyn BindingBase, anchor: Option<&Ref<FerroObject>>, ) -> Rc<dyn BindingExpressionBase>

Binds a property to a binding.

Some bindings need context to locate their source: a data context, named elements or resources. If this object is not an element, or is not yet attached to the tree, anchor provides that context.

Source

pub fn bind_binding_with_priority( &self, property: &'static FerroProperty, binding: &dyn BindingBase, priority: BindingPriority, anchor: Option<&Ref<FerroObject>>, ) -> Rc<dyn BindingExpressionBase>

Binds a property to a binding at the given priority, whatever the default priority of the binding is. Disposing the returned expression removes the binding.

An addition (no upstream counterpart): the values of WinUI’s visual states are bound at BindingPriority::Animation.

Source

pub fn indexer(&self, binding: &IndexerDescriptor) -> IndexerBinding

Gets a binding to a property of this object: the indexer taking an IndexerDescriptor (source[!Property] is source.indexer(&Property.bind())).

Source

pub fn bind_indexer( &self, binding: &IndexerDescriptor, value: &dyn BindingBase, ) -> Rc<dyn BindingExpressionBase>

Binds the property of an IndexerDescriptor to a binding: the setter of the indexer (target[!Property] = binding is target.bind_indexer(&Property.bind(), &binding)).

Source

pub fn bind<T>( &self, property: &'static StyledProperty<T>, source: Rc<dyn IObservable<T>>, priority: BindingPriority, ) -> Rc<dyn IDisposable>
where T: PropertyValue,

Binds a property to an observable.

Source

pub fn bind_value<T>( &self, property: &'static StyledProperty<T>, source: Rc<dyn IObservable<BindingValue<T>>>, priority: BindingPriority, ) -> Rc<dyn IDisposable>
where T: PropertyValue,

Binds a property to an observable of binding values.

Source

pub fn bind_untyped<T>( &self, property: &'static StyledProperty<T>, source: Rc<dyn IObservable<Rc<dyn AnyValue>>>, priority: BindingPriority, ) -> Rc<dyn IDisposable>
where T: PropertyValue,

Binds a property to an observable of untyped values.

Source

pub fn coerce_value(&self, property: &'static FerroProperty)

Coerces the specified property.

Source

pub fn get_direct_value<T>(&self, property: &'static DirectPropertyBase<T>) -> T
where T: PropertyValue,

Gets a direct property value.

Source

pub fn set_direct_value<T>( &self, property: &'static DirectPropertyBase<T>, value: T, )
where T: PropertyValue,

Sets a direct property value.

Source

pub fn clear_direct_value<T>(&self, property: &'static DirectPropertyBase<T>)
where T: PropertyValue,

Resets a direct property to its unset value.

Source

pub fn bind_direct<T>( &self, property: &'static DirectPropertyBase<T>, source: Rc<dyn IObservable<T>>, ) -> Rc<dyn IDisposable>
where T: PropertyValue,

Binds a direct property to an observable.

Source

pub fn bind_direct_value<T>( &self, property: &'static DirectPropertyBase<T>, source: Rc<dyn IObservable<BindingValue<T>>>, ) -> Rc<dyn IDisposable>
where T: PropertyValue,

Binds a direct property to an observable of binding values.

Source

pub fn bind_direct_untyped<T>( &self, property: &'static DirectPropertyBase<T>, source: Rc<dyn IObservable<Rc<dyn AnyValue>>>, ) -> Rc<dyn IDisposable>
where T: PropertyValue,

Binds a direct property to an observable of untyped values.

Source

pub fn set_and_raise<T>( &self, property: &'static DirectPropertyBase<T>, field: &RefCell<T>, value: T, ) -> bool
where T: PropertyValue,

Sets the backing field of a direct property, raising a change notification if the value changed. Returns true if it changed.

Source

pub fn set_and_raise_cell<T>( &self, property: &'static DirectPropertyBase<T>, field: &Cell<T>, value: T, ) -> bool
where T: PropertyValue + Copy,

set_and_raise for Copy values stored in a Cell.

Source

pub fn get_value_untyped( &self, property: &'static FerroProperty, ) -> Rc<dyn AnyValue>

Gets a property value as an untyped value.

Source

pub fn set_value_untyped( &self, property: &'static FerroProperty, value: &(dyn Any + 'static), priority: BindingPriority, ) -> Option<Rc<dyn IDisposable>>

Sets a property from an untyped value, which must hold exactly the property’s value type or the unset marker.

Source

pub fn set_current_value_untyped( &self, property: &'static FerroProperty, value: &(dyn Any + 'static), )

set_current_value with an untyped value.

Source

pub fn clear_value_untyped(&self, property: &'static FerroProperty)

Clears a property’s local value.

Source

pub fn bind_property_untyped( &self, property: &'static FerroProperty, source: Rc<dyn IObservable<Rc<dyn AnyValue>>>, priority: BindingPriority, ) -> Rc<dyn IDisposable>

Binds a property to an observable of untyped values.

Source

pub fn property_changed( &self, handler: impl Fn(&FerroPropertyChangedEventArgs<'_>) + 'static, ) -> Rc<dyn IDisposable>

Subscribes to property changes on this object. Disposing the returned handle unsubscribes.

Source

pub fn add_property_changed_handler( &self, handler: Rc<dyn Fn(&FerroPropertyChangedEventArgs<'_>)>, ) -> u64

Subscribes handler to property changes on this object and returns the token that remove_property_changed_handler takes: property_changed for a subscriber that keeps the object and the token itself, so that no handle is made.

Source

pub fn remove_property_changed_handler(&self, token: u64) -> bool

Ends a subscription of add_property_changed_handler.

Source

pub fn property_changed_subscriber_count(&self) -> usize

The number of subscribers to property changes on this object (a diagnostics member, used by tests to verify that subscriptions are released).

Source

pub fn raise_property_changed<T>( &self, property: &'static FerroProperty, old_value: Option<&T>, new_value: &T, priority: BindingPriority, is_effective_value: bool, )
where T: PropertyValue,

Raises a property changed notification.

Source

pub fn raise_direct_property_changed<T>( &self, property: &'static DirectPropertyBase<T>, old_value: &T, new_value: &T, )
where T: PropertyValue,

Raises a property changed notification for a direct property.

Trait Implementations§

Source§

impl BehaviorImpl for Behavior

Source§

fn on_attached(_this: &Self)

Called after the behavior is attached to the associated object. Read more
Source§

fn on_detaching(_this: &Self)

Called when the behavior is being detached from its associated object. Read more
Source§

fn on_attached_to_visual_tree(_this: &Self)

Called after the associated object is attached to the visual tree. Read more
Source§

fn on_detached_from_visual_tree(_this: &Self)

Called when the associated object is being detached from the visual tree. Read more
Source§

fn on_attached_to_logical_tree_event(_this: &Self)

Called after the associated object is attached to the logical tree (OnAttachedToLogicalTree). Read more
Source§

fn on_detached_from_logical_tree_event(_this: &Self)

Called when the associated object is being detached from the logical tree (OnDetachedFromLogicalTree). Read more
Source§

fn on_loaded(_this: &Self)

Called after the associated object is loaded. Read more
Source§

fn on_unloaded(_this: &Self)

Called when the associated object is unloaded. Read more
Source§

fn on_initialized_event(_this: &Self)

Called when the associated object is initialized. Read more
Source§

fn on_data_context_changed_event(_this: &Self)

Called when the data context of the associated object changed. Read more
Source§

fn on_resources_changed_event(_this: &Self)

Called when the resources of the associated object changed. Read more
Source§

fn on_actual_theme_variant_changed_event(_this: &Self)

Called when the actual theme variant of the associated object changed. Read more
Source§

impl Deref for Behavior

Source§

type Target = FerroObject

The resulting type after dereferencing.
Source§

fn deref(&self) -> &FerroObject

Dereferences the value.
Source§

impl FerroObjectImpl for Behavior

Source§

fn constructed(this: &Self)

Called once, right after the object has been allocated. This is where constructor logic that needs a reference to the object runs. Overrides must call parent_constructed first.
Source§

fn on_property_changed_core( this: &Self, change: &FerroPropertyChangedEventArgs<'_>, )

Called for every property change on the object, including changes of non-effective (base) values. Overriding this is rarely needed; override on_property_changed instead.
Source§

fn on_property_changed(this: &Self, change: &FerroPropertyChangedEventArgs<'_>)

Called when the effective value of a property changes on the object.
Source§

fn update_data_validation( this: &Self, property: &'static FerroProperty, state: BindingValueType, error: Option<&BindingError>, )

Called to update the validation state for properties for which data validation is enabled.
Source§

impl IBehavior for Behavior

Source§

fn associated_object(&self) -> Option<Ref<FerroObject>>

Gets the object to which the behavior is attached.
Source§

fn attach(&self, associated_object: Option<Ref<FerroObject>>)

Attaches to the specified object.
Source§

fn detach(&self)

Detaches this instance from its associated object.
Source§

impl IBehaviorEventsHandler for Behavior

Source§

fn attached_to_visual_tree_event_handler(&self)

Called when element is attached to the visual tree.
Source§

fn detached_from_visual_tree_event_handler(&self)

Called when element is detached from the visual tree.
Source§

fn attached_to_logical_tree_event_handler(&self)

Called when element is attached to the logical tree.
Source§

fn detached_from_logical_tree_event_handler(&self)

Called when element is detached from the logical tree.
Source§

fn loaded_event_handler(&self)

Called when element is loaded.
Source§

fn unloaded_event_handler(&self)

Called when element is unloaded.
Source§

fn initialized_event_handler(&self)

Called when element is initialized.
Source§

fn data_context_changed_event_handler(&self)

Called when element DataContext changed.
Source§

fn resources_changed_event_handler(&self)

Called when element Resources changed.
Source§

fn actual_theme_variant_changed_event_handler(&self)

Called when element ActualThemeVariant changed.
Source§

impl ObjectType for Behavior

Source§

type Parent = FerroObject

The base class. The root class is its own parent.
Source§

type VTable = BehaviorVTable

The virtual table of the class.
Source§

fn vtable() -> &'static Self::VTable

The virtual table used by instances whose most-derived class is Self.
Source§

fn register_class()

The static initialisation of the class. The first call on a thread, after doing the same for the base class: Read more
Source§

impl StaticType for Behavior

Source§

const TYPE: &'static TypeInfo

The runtime type.
Source§

impl<T: BehaviorImpl> Subclassable<T> for Behavior

Source§

impl Upcast<Behavior> for Behavior

Source§

fn upcast(&self) -> &Behavior

Source§

impl<T: ?Sized> Upcast<T> for Behavior
where FerroObject: Upcast<T>,

Source§

fn upcast(&self) -> &T

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> BehaviorImplExt for T
where T: BehaviorImpl,

Source§

fn parent_on_attached(this: &Self)

Calls the base class implementation of the member.
Source§

fn parent_on_detaching(this: &Self)

Calls the base class implementation of the member.
Source§

fn parent_on_attached_to_visual_tree(this: &Self)

Calls the base class implementation of the member.
Source§

fn parent_on_detached_from_visual_tree(this: &Self)

Calls the base class implementation of the member.
Source§

fn parent_on_attached_to_logical_tree_event(this: &Self)

Calls the base class implementation of the member.
Source§

fn parent_on_detached_from_logical_tree_event(this: &Self)

Calls the base class implementation of the member.
Source§

fn parent_on_loaded(this: &Self)

Calls the base class implementation of the member.
Source§

fn parent_on_unloaded(this: &Self)

Calls the base class implementation of the member.
Source§

fn parent_on_initialized_event(this: &Self)

Calls the base class implementation of the member.
Source§

fn parent_on_data_context_changed_event(this: &Self)

Calls the base class implementation of the member.
Source§

fn parent_on_resources_changed_event(this: &Self)

Calls the base class implementation of the member.
Source§

fn parent_on_actual_theme_variant_changed_event(this: &Self)

Calls the base class implementation of the member.
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> ClassDefaults for T
where T: ?Sized,

Source§

fn static_constructor()

The static constructor of a type: work done once per thread, after the properties of the type are registered and before its first instance exists (class handlers, affects_render, metadata overrides). Read more
Source§

impl<T> FerroObjectImplExt for T
where T: FerroObjectImpl,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.