async Task NavigateToView(Type viewModelType) { if (viewModelType is null) { throw new ArgumentNullException(nameof(viewModelType)); } Type viewType; if (!_map.TryGetValue(viewModelType, out viewType)) { throw new ArgumentException("No view found in view mapping for " + viewModelType.FullName + "."); } var constructor = viewType.GetTypeInfo() .DeclaredConstructors .FirstOrDefault(dc => dc.GetParameters().Count() <= 0); var view = constructor.Invoke(null) as Page; var vm = ((App)Application.Current).Kernel.GetService(viewModelType); view.BindingContext = vm; await XamarinFormsNav.PushAsync(view, true); }
public async Task GoBack() { if (CanGoBack) { await XamarinFormsNav.PopAsync(true); } OnCanGoBackChanged(); }
public async Task RemoveLastView() { if (XamarinFormsNav.NavigationStack.Any()) { var lastView = XamarinFormsNav.NavigationStack[XamarinFormsNav.NavigationStack.Count - 2]; XamarinFormsNav.RemovePage(lastView); } }
public async Task NavigateToMainPage() { if (XamarinFormsNav.NavigationStack.Count <= 1) { return; } for (var i = 0; i < XamarinFormsNav.NavigationStack.Count; i++) { await XamarinFormsNav.PopToRootAsync(); } }
public async Task ClearBackStack() { if (XamarinFormsNav.NavigationStack.Count <= 1) { return; } for (var i = 0; i < XamarinFormsNav.NavigationStack.Count - 1; i++) { XamarinFormsNav.RemovePage(XamarinFormsNav.NavigationStack[i]); } }
private async Task NavigateToView(Type viewModelType) { Type viewType; if (!_map.TryGetValue(viewModelType, out viewType)) { throw new ArgumentException("No view found in View Mapping for " + viewModelType.FullName + "."); } var constructor = viewType.GetTypeInfo() .DeclaredConstructors .FirstOrDefault(dc => dc.GetParameters().Count() <= 0); var view = constructor.Invoke(null) as Page; await XamarinFormsNav.PushAsync(view, true); }