public void NavigateTo(Job item)
 {
     JobDetailsPage page = new JobDetailsPage(jobService);
     page.BindingContext = item;
     Detail = new NavigationPage(page);
     IsPresented = false;
 }
        public JobMasterDetailPage()
        {
            JobListPage listPage = new JobListPage(jobService);
            listPage.JobList.ItemSelected += (sender, e) =>
            {
                var selectedJob = e.SelectedItem as Job;
                if (selectedJob != null)
                {
                    NavigateTo(e.SelectedItem as Job);
                }
            };

            var listNavigationPage = new MyNavigationPage(listPage);
            listNavigationPage.Title = "Appointments";
            Master = listNavigationPage;
            JobDetailsPage details = new JobDetailsPage(jobService);

            details.Content.IsVisible = false;
            Detail = new MyNavigationPage(details);
        }
        public JobListPage()
        {
            detailPage = new JobDetailsPage();

            jobList = new ListView
            {
                HasUnevenRows = true,
                IsGroupingEnabled = true,
                GroupDisplayBinding = new Binding("Key"),
                GroupHeaderTemplate = new DataTemplate(typeof(JobGroupingHeaderCell)),
                ItemTemplate = new DataTemplate(typeof(JobCell))
            };
            
            jobList.ItemTapped += async (sender, e) =>
            {                
                var selectedJob = e.Item as Job;
                if (selectedJob != null)
                    await ShowJobDetailsAsync((Job)e.Item);                    
            };


            searchBar = new SearchBar { Placeholder = "Enter search" };
            searchBar.SearchButtonPressed += async (object sender, EventArgs e) => 
            {
                await RefreshAsync();
            };

            var syncButton = new Button
            {
                HorizontalOptions = LayoutOptions.CenterAndExpand,
                VerticalOptions = LayoutOptions.CenterAndExpand,
                Font = AppStyle.DefaultFont,
                Text = "Sync",
                WidthRequest = 100
            };

            syncButton.Clicked += async (object sender, EventArgs e) =>
            {
                try
                {
                    syncButton.Text = "Syncing..";
                    await App.JobService.SyncAsync();
                    await this.RefreshAsync();
                }
                finally
                {
                    syncButton.Text = "Sync";
                }
            };

            var clearButton = new Button
            {
                HorizontalOptions = LayoutOptions.CenterAndExpand,
                VerticalOptions = LayoutOptions.CenterAndExpand,
                Font = AppStyle.DefaultFont,
                Text = "Clear",
                WidthRequest = 100
            };

            clearButton.Clicked += async (object sender, EventArgs e) =>
            {
                await App.JobService.ClearAllJobs();
                await this.RefreshAsync();
            };

            this.Title = "All Jobs";
            this.Content = new StackLayout
            {
                Orientation = StackOrientation.Vertical,
                Children = {
                    searchBar,
                    new StackLayout {
                        Orientation = StackOrientation.Horizontal,
                        Children = {
                            syncButton, clearButton
                        }
                    },                                        
					jobList
				}
            };
        }
        public JobListPage()
        {
            detailPage = new JobDetailsPage();

            jobList = new ListView
            {
                HasUnevenRows       = true,
                IsGroupingEnabled   = true,
                GroupDisplayBinding = new Binding("Key"),
                GroupHeaderTemplate = new DataTemplate(typeof(JobGroupingHeaderCell)),
                ItemTemplate        = new DataTemplate(typeof(JobCell))
            };

            jobList.ItemTapped += async(sender, e) =>
            {
                var selectedJob = e.Item as Job;
                if (selectedJob != null)
                {
                    await ShowJobDetailsAsync((Job)e.Item);
                }
            };


            searchBar = new SearchBar {
                Placeholder = "Enter search"
            };
            searchBar.SearchButtonPressed += async(object sender, EventArgs e) =>
            {
                await RefreshAsync();
            };

            var syncButton = new Button
            {
                HorizontalOptions = LayoutOptions.CenterAndExpand,
                VerticalOptions   = LayoutOptions.CenterAndExpand,
                Font         = AppStyle.DefaultFont,
                Text         = "Sync",
                WidthRequest = 100
            };

            syncButton.Clicked += async(object sender, EventArgs e) =>
            {
                try
                {
                    syncButton.Text = "Syncing..";
                    await App.JobService.SyncAsync();

                    await this.RefreshAsync();
                }
                finally
                {
                    syncButton.Text = "Sync";
                }
            };

            var clearButton = new Button
            {
                HorizontalOptions = LayoutOptions.CenterAndExpand,
                VerticalOptions   = LayoutOptions.CenterAndExpand,
                Font         = AppStyle.DefaultFont,
                Text         = "Clear",
                WidthRequest = 100
            };

            clearButton.Clicked += async(object sender, EventArgs e) =>
            {
                await App.JobService.ClearAllJobs();

                await this.RefreshAsync();
            };

            this.Title   = "All Jobs";
            this.Content = new StackLayout
            {
                Orientation = StackOrientation.Vertical,
                Children    =
                {
                    searchBar,
                    new StackLayout {
                        Orientation = StackOrientation.Horizontal,
                        Children    =
                        {
                            syncButton, clearButton
                        }
                    },
                    jobList
                }
            };
        }