private static void CreateTab <T>(TabNavigationType navigationType) { var newTab = Mvx.Resolve <ITabProvider>() .ShowViewModel( new MvxViewModelRequest(typeof(T), new MvxBundle(), new MvxBundle(), MvxRequestedBy.Unknown), navigationType); newTab.IsBlinking = navigationType == TabNavigationType.NewBackgroundTab; }
public override void Show(MvxViewModelRequest request) { try { TabNavigationType tabNavigationType = TabNavigationType.ActiveTab; if (request.PresentationValues != null) { if (request.PresentationValues.ContainsKey(nameof(TabNavigationType))) { Enum.TryParse(request.PresentationValues[nameof(TabNavigationType)], true, out tabNavigationType); } } _appShell.TabManager.ProcessViewModelRequest(request, tabNavigationType); } catch (Exception exception) { MvxTrace.Trace("Error seen during navigation request to {0} - error {1}", request.ViewModelType.Name, exception.ToLongString()); } }
/// <summary> /// Processes a view model request /// </summary> /// <param name="request">View model request</param> /// <param name="tabNavigationType">Type of tab navigation to perform</param> internal ITabInfo ProcessViewModelRequest(MvxViewModelRequest request, TabNavigationType tabNavigationType) { //process the request var requestTranslator = Mvx.Resolve <IMvxViewsContainer>(); var viewType = requestTranslator.GetViewType(request.ViewModelType); var converter = Mvx.Resolve <IMvxNavigationSerializer>(); var requestText = converter.Serializer.SerializeObject(request); //prepare tab var targetTab = ActiveTab; bool activeAndNeedsNew = tabNavigationType == TabNavigationType.ActiveTab && ActiveTab == null; if (activeAndNeedsNew || tabNavigationType != TabNavigationType.ActiveTab) { targetTab = CreateEmptyTab(); } targetTab.Frame.Navigate(viewType, requestText); if (tabNavigationType != TabNavigationType.NewBackgroundTab) { ActiveTab = targetTab; } return(targetTab); }
/// <summary> /// Shows a view model using tab manager /// </summary> /// <param name="request">View model request</param> /// <param name="tabNavigationType">Tab navigation type</param> /// <returns>Used tab</returns> public ITabInfo ShowViewModel(MvxViewModelRequest request, TabNavigationType tabNavigationType) => GetTabManager().ProcessViewModelRequest(request, tabNavigationType);