ferroui_reactiveui_controls/
ferro_binding_module.rs1use crate::{FerroCreatesCommandBinding, FerroObjectObservableForProperty, FerroViewThreadInvoker};
4use ferroui_reactiveui::{ICreatesCommandBinding, ICreatesObservableForProperty, IViewThreadInvoker};
5use ferroui_splat::{IModule, IMutableDependencyResolver, MutableDependencyResolverExt};
6use std::rc::Rc;
7
8#[derive(Debug, Default, Clone, Copy)]
11pub struct FerroBindingModule;
12
13impl FerroBindingModule {
14 pub fn new() -> Self {
16 Self
17 }
18}
19
20impl IModule for FerroBindingModule {
21 fn configure(&self, resolver: &dyn IMutableDependencyResolver) {
24 register_binding_integration(resolver);
25 }
26}
27
28pub fn register_binding_integration(resolver: &dyn IMutableDependencyResolver) {
35 resolver.register_lazy_singleton::<dyn ICreatesObservableForProperty>(|| {
36 Some(Rc::new(FerroObjectObservableForProperty::new()) as Rc<dyn ICreatesObservableForProperty>)
37 });
38 resolver.register_lazy_singleton::<dyn ICreatesCommandBinding>(|| {
39 Some(Rc::new(FerroCreatesCommandBinding::new()) as Rc<dyn ICreatesCommandBinding>)
40 });
41 resolver.register_lazy_singleton::<dyn IViewThreadInvoker>(|| Some(FerroViewThreadInvoker::instance() as Rc<dyn IViewThreadInvoker>));
42}