private void container_OnPopped(object sender, IViewNavigationArgs e) { if (e.PoppedView != null) { var model = e.PoppedView.BindingContext as IViewModel; if (model != null) { model.OnPopped(); } var disposableModel = e.PoppedView.BindingContext as IDisposable; if (disposableModel != null) { disposableModel.Dispose(); } } if (e.CurrentView != null) { var model = e.CurrentView.BindingContext as IViewModel; if (model != null) { model.OnBackNavigated(null); } } }
private void proxy_OnPopped(object sender, IViewNavigationArgs e) { if (e.PoppedView != null) { var model = e.PoppedView.BindingContext as IViewModel; if (model != null) { model.OnPopped(); } var disposableModel = e.PoppedView.BindingContext as IDisposable; if (disposableModel != null) { disposableModel.Dispose(); } } if (e.CurrentView != null) { var model = e.CurrentView.BindingContext as IViewModel; if (model != null) { model.OnBackNavigated(e.Parameter); } } // Remove CurrentView _viewKeyTracking.Remove(CurrentView); // Changes the navigation key back to the previous page CurrentView = _viewsByKey.First(x => x.Value.Type == e.CurrentView.GetType()).Key; CurrentViewTrack.RemoveAt(CurrentViewTrack.Count - 1); }
private void proxy_OnPopped(object sender, IViewNavigationArgs e) { if (e.PoppedView != null) { var model = e.PoppedView.BindingContext as IViewModel; if (model != null) { model.OnPopped(); } var disposableModel = e.PoppedView.BindingContext as IDisposable; if (disposableModel != null) { disposableModel.Dispose(); } } if (e.PopType == PopType.SilentPop) { return; } if (e.CurrentView != null) { var model = e.CurrentView.BindingContext as IViewModel; if (model != null) { model.OnBackNavigated(e.Parameter); } } // Remove Last Instance of CurrentView for (int i = _viewKeyTracking.Count; i > 0; i--) { var tracking = _viewKeyTracking[i - 1]; if (tracking.Key == CurrentView.Key && tracking.Platform == CurrentView.Platform) { _viewKeyTracking.RemoveAt(i - 1); break; } } // Changes the navigation key back to the previous page CurrentView = _viewsByKey.First(x => x.Value.Type == e.CurrentView.GetType()).Key; CurrentViewTrack.RemoveAt(CurrentViewTrack.Count - 1); }