コード例 #1
0
        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;
        }