public void LoadData()
        {
            this.Items.Clear();

            JourneyRepository journeyRepository = new JourneyRepository();

            IEnumerable<Journey> journeys = journeyRepository.GetAll().Reverse();

            foreach (Journey journey in journeys)
            {
                ItemViewModel item =
                    new ItemViewModel()
                    {
                        Id = journey.Id,
                        LineOne =
                            string.Format(
                                "{0:#,0} {1}",
                                journey.Miles,
                                App.Settings.UnitType.ToString().ToLower()),
                        LineTwo = journey.Date.ToString("dd/MM/yyyy")
                    };

                this.Items.Add(item);
            }

            this.IsDataLoaded = true;
        }
        private void ApplicationBarIconButton_Save_Click(object sender, EventArgs e)
        {
            JourneyRepository journeyRepository = new JourneyRepository();

            Journey journey = ((EditJourneyViewModel)this.DataContext).Journey;

            journeyRepository.Update(journey);

            // TODO: Make the main page load data on navigate to?
            App.ViewModel.LoadData();

            NavigationService.GoBack();
        }
        private void ApplicationBarIconButton_Delete_Click(object sender, EventArgs e)
        {
            JourneyRepository journeyRepository = new JourneyRepository();

            Journey journey = ((EditJourneyViewModel)this.DataContext).Journey;

            journeyRepository.Delete(journey);

            // TODO: Look at making the view model collection an observable collection.
            App.ViewModel.LoadData();

            NavigationService.GoBack();
        }
        /// <summary>
        /// Constructor for the Application object.
        /// </summary>
        public App()
        {
            // Global handler for uncaught exceptions.
            UnhandledException += Application_UnhandledException;

            // Standard Silverlight initialization
            InitializeComponent();

            // Phone-specific initialization
            InitializePhoneApplication();

            // Show graphics profiling information while debugging.
            if (System.Diagnostics.Debugger.IsAttached)
            {
                // Display the current frame rate counters
                Application.Current.Host.Settings.EnableFrameRateCounter = true;

                // Show the areas of the app that are being redrawn in each frame.
                //Application.Current.Host.Settings.EnableRedrawRegions = true;

                // Enable non-production analysis visualization mode,
                // which shows areas of a page that are handed off to GPU with a colored overlay.
                //Application.Current.Host.Settings.EnableCacheVisualization = true;

                // Disable the application idle detection by setting the UserIdleDetectionMode property of the
                // application's PhoneApplicationService object to Disabled.
                // Caution:- Use this under debug mode only. Application that disables user idle detection will continue to run
                // and consume battery power when the user is not using the phone.
                PhoneApplicationService.Current.UserIdleDetectionMode = IdleDetectionMode.Disabled;
            }

            string connectionString = "Data Source=isostore:/MileageTracker.sdf";

            using (LinqDataContext dataContext = new LinqDataContext(connectionString))
            {
                if (!dataContext.DatabaseExists())
                {
                    dataContext.CreateDatabase();
                }
            }

            JourneyRepository repo = new JourneyRepository();

            var readJourneys = repo.GetAll();
        }
        private void ApplicationBarIconButton_Save_Click(object sender, EventArgs e)
        {
            // TODO: Verify input, to ensure we have start mileage, end mileage and a date.
            Journey journey = new Journey()
            {
                Date = this.Date.Value.Value,
                StartMileage = int.Parse(this.StartMileage.Text),
                EndMileage = int.Parse(this.EndMileage.Text)
            };

            JourneyRepository journeyRepository = new JourneyRepository();

            journeyRepository.Insert(journey);

            App.ViewModel.LoadData();

            NavigationService.GoBack();
        }
        // TODO: Looks to count an on navigated to event when returning from the date picker.  Check this
        //       and see if you can do this some other way?  Maybe bindings again.
        protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
        {
            base.OnNavigatedTo(e);

            string idParam = string.Empty;

            if (this.NavigationContext.QueryString.TryGetValue("Id", out idParam))
            {
                JourneyRepository journeyRepository = new JourneyRepository();

                int id = int.Parse(idParam);

                EditJourneyViewModel viewModel = new EditJourneyViewModel();
                viewModel.Journey = journeyRepository.GetById(id);

                this.DataContext = viewModel;
            }
        }
        // Code to execute when the application is closing (eg, user hit Back)
        // This code will not execute when the application is deactivated
        private void Application_Closing(object sender, ClosingEventArgs e)
        {
            // TODO: This needs putting somewhere better.
            SettingsRepository settingsRepository = new SettingsRepository();

            Settings settings = settingsRepository.Get();

            DateTime expireAfter = DateTime.Now.Date.AddMonths(0 - settings.ExpireAfterDays);

            JourneyRepository journeyRepository = new JourneyRepository();

            journeyRepository.DeleteOlderThan(expireAfter);
        }