protected virtual void CreateMenuPage(string menuPageTitle, string menuIcon = null) { _masterView = new MasterView(); _listView = _masterView.FindByName <ListView>("ListView"); var source = Pages.GroupBy(item => item.Group).Select(item => new Grouping <string, LazyLoadedPage>(item.Key, item.ToList())).ToList(); _listView.ItemTapped += (sender, args) => { var lazyLoadedPage = args.Item as LazyLoadedPage; if (Pages.Contains(lazyLoadedPage)) { Page page = lazyLoadedPage.Page; int tabGroupIndex = lazyLoadedPage.TabGroupIndex; if (page == null) { page = ResolvePage(lazyLoadedPage); } Detail = page; if (tabGroupIndex > 0) { var tabbedNavigationPage = new FreshTabbedNavigationContainer(); switch (tabGroupIndex) { case 1: tabbedNavigationPage.AddTab <ContactListViewModel>("Contacts 1", "Icon.png"); tabbedNavigationPage.AddTab <BlankViewModel>("Contacts 2", "Icon.png"); tabbedNavigationPage.AddTab <BlankViewModel>("Contacts 3", "Icon.png"); Detail = tabbedNavigationPage; break; case 2: tabbedNavigationPage.AddTab <TabViewModel>("Tab 1", "Icon.png"); tabbedNavigationPage.AddTab <BlankViewModel>("Tab 2", "Icon.png"); Detail = tabbedNavigationPage; break; } } } IsPresented = false; }; var navPage = new NavigationPage(_masterView) { Title = menuPageTitle }; //adding an actual icon does't seem to work. The unicode here is a temporarily solution if (!string.IsNullOrEmpty(menuIcon)) { navPage.Icon = menuIcon; Icon = menuIcon; } Master = navPage; }