public HomeView()
        {
            pages = new Dictionary<MenuType, NavigationPage>();
            BindingContext = new HomeViewModel();

            Master = master = new HomeMasterView(ViewModel);

            var homeNav = new NavigationPage(master.PageSelection)
            {
                BarBackgroundColor = Color.FromHex("#3498DB"),
                BarTextColor = Color.White
            };
            Detail = homeNav;

            pages.Add(MenuType.About, homeNav);

            master.PageSelectionChanged = async (menuType) =>
            {

                if (Detail != null && Device.OS == TargetPlatform.WinPhone)
                {
                    await Detail.Navigation.PopToRootAsync();
                }

                NavigationPage newPage;
                if (pages.ContainsKey(menuType))
                {
                    newPage = pages[menuType];
                }
                else
                {
                    newPage = new NavigationPage(master.PageSelection)
                    {
                        BarBackgroundColor = Color.FromHex("#3498DB"),
                        BarTextColor = Color.White
                    };
                    pages.Add(menuType, newPage);
                }
                Detail = newPage;
                Detail.Title = master.PageSelection.Title;
                if (Device.Idiom != TargetIdiom.Tablet)
                    IsPresented = false;
            };

            this.Icon = "slideout.png";
        }
        public HomeMasterView(HomeViewModel viewModel)
        {
            this.Icon      = "slideout.png";
            BindingContext = viewModel;


            var layout = new StackLayout {
                Spacing = 0
            };

            var label = new ContentView
            {
                Padding         = new Thickness(10, 36, 0, 5),
                BackgroundColor = Color.Transparent,
                Content         = new Label
                {
                    Text     = "MENU",
                    FontSize = Device.GetNamedSize(NamedSize.Medium, typeof(Label))
                }
            };

            layout.Children.Add(label);

            var listView = new ListView();

            DataTemplate cell = null;

            if (Device.OS == TargetPlatform.Windows)
            {
                cell = new DataTemplate(typeof(FancyListCell));
                this.BackgroundColor = Color.FromHex("3498DB");
            }
            else
            {
                cell = new DataTemplate(typeof(ListImageCell));
                cell.SetBinding(TextCell.TextProperty, HomeViewModel.TitlePropertyName);
                cell.SetBinding(ImageCell.ImageSourceProperty, "Icon");
            }



            listView.ItemTemplate = cell;

            listView.ItemsSource = viewModel.MenuItems;
            if (about == null)
            {
                about = new AboutPage();
            }

            PageSelection = about;
            //Change to the correct page
            listView.ItemSelected += (sender, args) =>
            {
                var menuItem = listView.SelectedItem as HomeMenuItem;
                menuType = menuItem.MenuType;
                switch (menuItem.MenuType)
                {
                case MenuType.About:
                    if (about == null)
                    {
                        about = new AboutPage();
                    }

                    PageSelection = about;
                    break;

                case MenuType.Blog:
                    if (blog == null)
                    {
                        blog = new BlogPage();
                    }

                    PageSelection = blog;
                    break;

                case MenuType.Twitter:
                    if (twitter == null)
                    {
                        twitter = new TwitterPage();
                    }

                    PageSelection = twitter;
                    break;

                case MenuType.DeveloperLife:
                    if (developerlife == null)
                    {
                        developerlife = new PodcastPage(menuItem);
                    }

                    PageSelection = developerlife;
                    break;

                case MenuType.Hanselminutes:
                    if (hanselminutes == null)
                    {
                        hanselminutes = new PodcastPage(menuItem);
                    }

                    PageSelection = hanselminutes;
                    break;

                case MenuType.Ratchet:
                    if (ratchet == null)
                    {
                        ratchet = new PodcastPage(menuItem);
                    }

                    PageSelection = ratchet;
                    break;
                }
            };

            listView.SelectedItem = viewModel.MenuItems[0];
            layout.Children.Add(listView);

            Content = layout;
        }
        public HomeMasterView(HomeViewModel viewModel)
        {
            this.Icon = "slideout.png";
            BindingContext = viewModel;


            var layout = new StackLayout { Spacing = 0 };

            var label = new ContentView
            {
                Padding = new Thickness(10, 36, 0, 5),
                BackgroundColor = Color.Transparent,
                Content = new Label
                {
                    Text = "MENU",
                    FontSize = Device.GetNamedSize(NamedSize.Medium, typeof(Label))
                }
            };

            layout.Children.Add(label);

            var listView = new ListView();

            DataTemplate cell = null;

            if (Device.OS == TargetPlatform.Windows)
            {
                cell = new DataTemplate(typeof(FancyListCell));
                this.BackgroundColor = Color.FromHex("3498DB");
            }
            else
            {
                cell = new DataTemplate(typeof(ListImageCell));
                cell.SetBinding(TextCell.TextProperty, HomeViewModel.TitlePropertyName);
                cell.SetBinding(ImageCell.ImageSourceProperty, "Icon");
            }



            listView.ItemTemplate = cell;

            listView.ItemsSource = viewModel.MenuItems;
            if (about == null)
                about = new AboutPage();

            PageSelection = about;
            //Change to the correct page
            listView.ItemSelected += (sender, args) =>
            {
                var menuItem = listView.SelectedItem as HomeMenuItem;
                menuType = menuItem.MenuType;
                switch (menuItem.MenuType)
                {
                    case MenuType.About:
                        if (about == null)
                            about = new AboutPage();

                        PageSelection = about;
                        break;
                    case MenuType.Blog:
                        if (blog == null)
                            blog = new BlogPage();

                        PageSelection = blog;
                        break;
                    case MenuType.Twitter:
                        if (twitter == null)
                            twitter = new TwitterPage();

                        PageSelection = twitter;
                        break;
                    case MenuType.DeveloperLife:
                        if (developerlife == null)
                            developerlife = new PodcastPage(menuItem);

                        PageSelection = developerlife;
                        break;
                    case MenuType.Hanselminutes:
                        if (hanselminutes == null)
                            hanselminutes = new PodcastPage(menuItem);

                        PageSelection = hanselminutes;
                        break;
                    case MenuType.Ratchet:
                        if (ratchet == null)
                            ratchet = new PodcastPage(menuItem);

                        PageSelection = ratchet;
                        break;
                }
            };

            listView.SelectedItem = viewModel.MenuItems[0];
            layout.Children.Add(listView);

            Content = layout;
        }