protected virtual void OnAfterBehaviorEvent <T>(IBehaviorEventSender <T> sender, BehaviorEvent <T> behaviorEvent) where T : IViewModel, new() { }
private bool OnBehaviorEventFired <T>(IBehaviorEventSender <T> sender, BehaviorEvent <T> behaviorEvent) where T : IViewModel, new() { this.OnBeforeBehaviorLookup(behaviorEvent); if (this.Behaviors.ContainsKey(behaviorEvent.BehaviorReference) == false) { return(false); } var behavior = this.Behaviors[behaviorEvent.BehaviorReference] as IExecutableBehavior <T>; if (behavior == null) { return(false); } behavior.BehaviorContext = this; this.OnBeforeBehaviorEvent(sender, behaviorEvent); try { this.OnBehaviorEvent(behavior, behaviorEvent); } catch (Exception ex) { this.OnErrorBehaviorEvent(ex); return(false); } this.OnAfterBehaviorEvent(sender, behaviorEvent); string viewName = null; if (this.BehaviorBinding.ContainsKey(behaviorEvent.BehaviorReference)) { viewName = this.BehaviorBinding[behaviorEvent.BehaviorReference]; } this.OnBeforeTransitionEvent(viewName, behavior); var view = sender as ViewBase; if (view != null) { view.BehaviorContext = this; } this.TransitionView(view, viewName, behaviorEvent); if (viewName == null && sender is ViewBase) { this.BindingViewModel(sender as ViewBase, behaviorEvent.ViewModel); } else if (viewName != null) { var next = this.GetNextView(viewName); if (next != null) { this.BindingViewModel(next, behaviorEvent.ViewModel); next.OnAfterTransition(behaviorEvent); foreach (var sub in next.Controls.OfType <ViewBase>()) { sub.BehaviorContext = next.BehaviorContext; sub.OnAfterTransition(behaviorEvent); } } } this.OnAfterTransitionEvent(viewName, behavior); return(true); }