Как использовать пользовательскую навигацию ViewModel с MasterDetailPage - PullRequest
0 голосов
/ 14 апреля 2020

Im Использование пользовательской навигации ViewModelFirst. Ссылка навигации здесь https://docs.microsoft.com/en-us/xamarin/xamarin-forms/enterprise-application-patterns/navigation

Я реализовал эту навигацию с ViewModel, работающим нормально. Но с MasterDetailPage. Страница не становится дочерней от MasterPage. Как я должен ориентироваться, чтобы представления становились дочерними для MasterPage (страницы Parrent).

Вот как я пытаюсь

  private async Task InternalNavigateToAsync(Type viewModelType, object parameter)
        {
            try
            {
                Page page = CreatePage(viewModelType, parameter);
                if (page is MasterMainPage)
                {
                    Application.Current.MainPage = new CustomNavigationPage(page);
                }
                else
                {
                    var navigationPage = Application.Current.MainPage as CustomNavigationPage;
                    if (navigationPage != null)
                    {
                        await (App.Current.MainPage as MasterDetailPage).Detail.Navigation.PushAsync(page);
                        //var masterMainPage = Startup.ServiceProvider?.GetService<MasterMainPage>();
                        //masterMainPage.Detail = page;
                        // await navigationPage.PushAsync(page);

                    }
                    else
                    {
                        Application.Current.MainPage = new CustomNavigationPage(page);
                    }
                }
                await (page.BindingContext as ViewModelBase).OnAppearing(parameter);
            }
            catch (Exception ex)
            {

                throw;
            }
        }

В коде, который я устанавливаю, MasterDetailPage как Root и с использованием навигации. Я не понимаю, как мне добавить разные представления к потомку MasterDetailPage.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...