public void ChangeModelContext(NavigationContext oldContext, NavigationContext newContext, bool push) { PrepareState(newContext); if (push) { NavigationData navigationData = GetNavigationData(oldContext, false); navigationData.Disable(); navigationData = GetNavigationData(newContext, false); navigationData.Enable(); } else { NavigationData navigationData = GetNavigationData(oldContext, false); navigationData.Dispose(); navigationData = GetNavigationData(newContext, false); navigationData.Enable(); } }
public void ChangeModelContext(NavigationContext oldContext, NavigationContext newContext, bool push) { PrepareState(newContext); if (push) { NavigationData navigationData = GetNavigationData(oldContext, false); navigationData.Disable(); SaveUIState(oldContext); navigationData = GetNavigationData(newContext, false); navigationData.Enable(); if (navigationData.CurrentScreenData.SkipForSingleItem && navigationData.CurrentScreenData.Items.Count == 1) { var command = navigationData.CurrentScreenData.Items.FirstOrDefault()?.Command; if (command != null) { newContext.SetContextVariable(WorkflowManager.KEY_NAVIGATION_SKIP_ACTION, command); } } } else { NavigationData navigationData = GetNavigationData(oldContext, false); navigationData.Dispose(); navigationData = GetNavigationData(newContext, false); navigationData.Enable(); if (navigationData.CurrentScreenData.SkipForSingleItem && navigationData.CurrentScreenData.Items.Count == 1) { newContext.SetContextVariable(WorkflowManager.KEY_NAVIGATION_SKIP_ACTION, new MethodDelegateCommand(() => { var wfManager = ServiceRegistration.Get <IWorkflowManager>(false); wfManager?.NavigatePop(1); })); } } }