private void OnNavigated(object sender, NavigationEventArgs args)
        {
            _lastParameter = null;
            var handler = Navigated;

            if (handler == null)
            {
                return;
            }

            var dp = args.Content as DependencyObject;

            if (dp == null)
            {
                handler(this, new NavigationEventArgsWrapper(args));
            }
            else
            {
                //to indicate that args is handled.
                args.SetHandled(true);
                //to restore state before navigate.
                dp.Dispatcher.RunAsync(CoreDispatcherPriority.Low,
                                       () => handler(this, new NavigationEventArgsWrapper(args)));
            }
        }
        private void OnNavigated(object sender, NavigationEventArgs args)
        {
            EventHandler <INavigationService, NavigationEventArgsBase> handler = Navigated;

            if (handler == null)
            {
                return;
            }
#if WINDOWS_PHONE
            args.SetHandled(true);
            args.InvokeAfterRestoreState(eventArgs => handler(this, new NavigationEventArgsWrapper(eventArgs)));
#else
            handler(this, new NavigationEventArgsWrapper(args));
#endif
        }
Example #3
0
        private void OnNavigated(object sender, NavigationEventArgs args)
        {
            var bringToFront = _bringToFront;

            _lastParameter = null;
            _bringToFront  = false;
            var handler = Navigated;

            if (handler == null)
            {
                return;
            }

            var dp = args.Content as DependencyObject;

            if (dp == null)
            {
                handler(this, new NavigationEventArgsWrapper(args, bringToFront));
            }
            else
            {
                //to indicate that args is handled.
                args.SetHandled(true);
                //to restore state before navigate.
                dp.Dispatcher.RunAsync(CoreDispatcherPriority.Low, () => handler(this, new NavigationEventArgsWrapper(args, bringToFront)));
            }
            if (!bringToFront)
            {
                return;
            }
            var id = GetViewModelIdFromParameter(args.Parameter);

            for (int index = 0; index < _frame.BackStack.Count; index++)
            {
                if (GetViewModelIdFromParameter(_frame.BackStack[index].Parameter) == id)
                {
                    _frame.BackStack.RemoveAt(index);
                    --index;
                    break;
                }
            }
        }