public async Task NavigateMenuItemAsync <TViewModelMasterDetail>(Model.MasterDetail.MenuItem selectedMenuItem, NavigationParameters parameters = null) where TViewModelMasterDetail : BaseViewModel { await InternalNavigateMenuItemAsync(typeof(TViewModelMasterDetail), selectedMenuItem, parameters); }
private async Task InternalNavigateMenuItemAsync(Type viewModelMasterDetailType, Model.MasterDetail.MenuItem selectedMenuItem, NavigationParameters parameters = null) { try { Page page = await CreateAndBindPage(selectedMenuItem.ViewModelType, parameters); if (CurrentApplication.MainPage is MasterDetailPage currentPage) { currentPage.Detail = new NavigationPage(page); currentPage.IsPresented = false; } else { MasterDetailPage masterDetailPage = await CreateAndBindMasterDetailPage(viewModelMasterDetailType, selectedMenuItem.ViewModelType, parameters); CurrentApplication.MainPage = masterDetailPage; if (CurrentApplication.MainPage is MasterDetailPage masterPage) { masterPage.IsPresented = false; } } } catch (Exception ex) { ex.LogException(); } }