2016-08-10 3 views
0

Можем ли мы иметь несколько шаблонов навигации в одном приложении?Формы Xamarin: несколько навигационных шаблонов в одном приложении

В моей странице app.xaml я добавил функцию

void SetUpNavigation() 
     { 
      var page = FreshPageModelResolver.ResolvePageModel<LaunchPageModel>(); 
      var navPage = new FreshNavigationContainer(page); 
      MainPage = navPage; 
     } 

Но после того, как пользователь в Я хочу использовать главную страницу детали. Есть ли способ сделать это ??

ответ

2

Да. Вам просто нужно снова установить MainPage вашего приложения. В наших проектах мы используем вспомогательный класс, который есть метод Restart с следующей логикой:

public static void Restart(View view, NavigationType navtype) 
{ 
    // Reset the mainpage depending on the navigation type 
    if (navtype == NavigationType.RestartWithMasterPage) 
    { 
     Application.Current.MainPage = new MasterPage(view); 
    } 
    else if (navtype == NavigationType.Restart) 
    { 
     Application.Current.MainPage = new NavigationPage(view); 
    } 
    else 
    { 
     // Just show the page 
     Application.Current.MainPage = view; 
    } 
} 

NavigationType является перечислением:

public enum NavigationType 
{ 
    Normal, 
    Restart, 
    RestartWithMasterPage 
} 
+0

Я попытался реализациями вспомогательного класса. Когда пользователь нажимает на кнопку сказать зарегистрировались, то это будет вызывать функцию рестарта и 'Application.Current.MainPage = SetupMasterDetailNav()' текущая главная страница будет вызывать 'публичной страницы SetupMasterDetailNav() \t \t { \t \t \t var masterDetail = new FreshMvvm.FreshMasterDetailNavigationContainer(); \t \t \t masterDetail.AddPage ("Login"); \t \t \t masterDetail.AddPage ("Регистрация"); \t \t \t masterDetail.Init ("x"); \t \t \t MainPage = masterDetail; \t \t \t возвращение MainPage; \t \t} ' Но он все еще находится на одной странице. Я не могу изменить навигацию. – TheDeveloper

+0

Ничего. Я понял. Большое спасибо. – TheDeveloper

Смежные вопросы