/// <summary>
        /// (Re)sets DataContexts of grouped sections on the window.
        /// </summary>
        private void SetDataContexts()
        {
            journeysList      = journeys.ByVehicle(vehicle);
            fuelPurchasesList = fuelPurchases.ByVehicle(vehicle);
            servicesList      = services.ByVehicle(vehicle);

            // Consequence of not having MVVM: have to null DataContext and assign the expected DataContext for changes to mitigate
            if (journeysList.Count > 0)
            {
                gbJourney.DataContext = null;
                gbJourney.DataContext = journeysList[0];
            }

            if (fuelPurchasesList.Count > 0)
            {
                gbFuelPurchase.DataContext = null;
                gbFuelPurchase.DataContext = fuelPurchasesList[0];
            }

            if (servicesList.Count > 0)
            {
                gbRecentService.DataContext = null;
                gbRecentService.DataContext = servicesList[0];
            }
        }
        /// <summary>
        /// Refreshes all information shown on the window.
        /// </summary>
        public void Refresh()
        {
            string selectedVehicleOdometer = "-";

            if (lvVehicles.SelectedItem is Vehicle)
            {
                // Set selected vehicle in the list and propagate context to groupboxes.
                selectedVehicle = (Vehicle)lvVehicles.SelectedItem;
                CollectionViewSource.GetDefaultView(lvVehicles.ItemsSource).Refresh();

                ObservableCollection <Journey>      journeys      = Journeys.ByVehicle(selectedVehicle);
                ObservableCollection <Service>      services      = Services.ByVehicle(selectedVehicle);
                ObservableCollection <FuelPurchase> fuelPurchases = FuelPurchases.ByVehicle(selectedVehicle);

                gbVehicle.DataContext = selectedVehicle;

                // Consequence of not having MVVM: have to null DataContext and assign the expected DataContext for changes to mitigate
                gbJourney.DataContext = null;
                gbJourney.DataContext = journeys.Count > 0 ? journeys[0] : null;

                gbRecentService.DataContext = null;
                gbRecentService.DataContext = services.Count > 0 ? services[0] : null;

                gbFuelPurchase.DataContext = null;
                gbFuelPurchase.DataContext = fuelPurchases.Count > 0 ? fuelPurchases[0] : null;

                selectedVehicleOdometer = Vehicles.TotalDistance(journeys).ToString();

                SetVehiclePropertyButtons();
            }
            else
            {
                gbJourney.DataContext = null;
                SetVehiclePropertyButtons(false);
            }

            tbOdometer.Text = selectedVehicleOdometer;
        }
 /// <summary>
 /// Refreshes list by re-grouping items that belong to vehicle and refresh list view.
 /// </summary>
 private void Refresh()
 {
     filteredJourneys       = journeys.ByVehicle(vehicle);
     lvJourneys.ItemsSource = filteredJourneys;
     CollectionViewSource.GetDefaultView(lvJourneys.ItemsSource).Refresh();
 }