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) { 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; } } }