private void ClearNavigationStackIfNeed(IDataContext context) { if (context == null) { context = DataContext.Empty; } var backStack = _frame.BackStack; if (!context.GetData(NavigationConstants.ClearBackStack) || backStack.IsReadOnly) { return; } for (int index = 0; index < backStack.Count; index++) { var vmId = GetViewModelIdFromParameter(backStack[index].Parameter); var viewModel = _viewModelProvider.TryGetViewModelById(vmId); if (viewModel != null) { var ctx = new DataContext(context); ctx.AddOrUpdate(NavigationConstants.ViewModel, viewModel); RaiseNavigated(new RemoveNavigationEventArgs(ctx)); } backStack.RemoveAt(index); --index; } }
private void ClearNavigationStack(IDataContext context) { var backStack = _frame.BackStack; if (backStack.IsReadOnly) { return; } for (int index = 0; index < backStack.Count; index++) { var vmId = GetViewModelIdFromParameter(backStack[index].Parameter); var viewModel = _viewModelProvider.TryGetViewModelById(vmId); if (viewModel != null) { var ctx = new DataContext(context); ctx.AddOrUpdate(NavigationConstants.ViewModel, viewModel); RaiseNavigated(new NavigationEventArgs(MugenMvvmToolkit.Models.NavigationMode.Remove, ctx, null, null)); } backStack.RemoveAt(index); --index; } }