public ComponentUIObject(IActorComponent target, IUIObject?parent, IViewModel model) { _target = target; _parent = parent; DataContext = model; _target.Unloaded.Subscribe(_ => ControlUnload?.Invoke()); }
protected virtual void UserControlOnUnloaded() { try { Logger.Debug("Control Unloaded {Element}", UserControl.GetType()); ControlUnload?.Invoke(); BindLogic.CleanUp(); Model.Actor.Tell(new UnloadEvent()); } catch (Exception e) { Logger.Error(e, "Error On Unload User Control"); } }
protected virtual void UserControlOnLoaded() { Logger.Debug("Control Loaded {Element}", UserControl.GetType()); ControlUnload?.Invoke(); if (!Model.IsInitialized) { var mayParent = ControlBindLogic.FindParentDatacontext(May(UserControl).Cast <TControl, DependencyObject>()); Match(mayParent, parent => Tell(parent.Actor, new InitParentViewModel(Model)), () => ViewModelSuperviser.Get(ActorApplication.Application.ActorSystem) .Create(Model)); } Model.AwaitInit(() => { Tell(Model.Actor, new InitEvent(UserControl.Key)); CommandManager.InvalidateRequerySuggested(); }); }