Exemple #1
0
 protected virtual void OnAfterBehaviorEvent <T>(IBehaviorEventSender <T> sender, BehaviorEvent <T> behaviorEvent) where T : IViewModel, new()
 {
 }
Exemple #2
0
        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);
        }