/// <summary>
        /// Scrolls to item.
        /// </summary>
        /// <param name="race">The race.</param>
        private void ScrollToItem(UserControls.Race race)
        {
            if (race != null)
            {
                // es gibt ein Rennen, das später ist als jetzt

                var index = _vm.Races.IndexOf(race);

                if (index != -1)
                {
                    var frameworkElement = ucRaces.GetItemsControl().ItemContainerGenerator.ContainerFromIndex(index) as FrameworkElement;
                    frameworkElement.BringIntoView();
                }
            }
        }
        /// <summary>
        /// Refreshes this instance.
        /// </summary>
        private void Refresh()
        {
            try
            {
                RefreshCurrentTime(); // lokal gespeicherte Zeit aktualisieren, kann Fehler werfen!
            }
            catch (Exception ex)
            {
                Tools.ShowError(ex.Message);
                return;
            }

            var boatBuilder = new BoatBuilder(_currentTime);

            var rowersData = GlobalData.Instance.RowersData;
            var racesData  = GlobalData.Instance.RacesData;
            // var racesConfiguration = GlobalData.Instance.RacesConfiguration; // TODO: Was ist hiermit?

            // aktueller Zeitstempel
            var day = Properties.Settings.Default.Today;
            var now = new DateTime(day.Year, day.Month, day.Day, _currentTime.Hours, _currentTime.Minutes, _currentTime.Seconds);

            // Alle Rennen der DB durchgehen
            var vmRaces = new System.Collections.ObjectModel.ObservableCollection <UserControls.Race>();

            foreach (var raceData in racesData)
            {
                // Neues Rennen
                var newRace = new UserControls.Race(raceData, _delayTime, GlobalData.Instance.MainViewModel.SetDelayTime);

                newRace.UpdateRemainingMinutes(now);

                // bei reduzierter Ansicht: Rennen ggf. nicht anzeigen (weil an einem anderen Tag oder schon lange vorbei oder erst in Stunden)
                // das wird erst hier gemacht, weil hier das Rennen samt Verspätung als Objekt vorhanden ist
                if (GlobalData.Instance.MainViewModel.RacesReducedView)
                {
                    // Zeit in Stunden bis zum Rennen
                    var remainingHours = (newRace.RaceDT - now).TotalHours;

                    if (remainingHours < 0)
                    {
                        // Rennen ist in der Vergangenheit
                        continue;
                    }

                    if (remainingHours > 4)
                    {
                        // Es sind noch mehr als 4 Stunden bis zum Rennen
                        continue;
                    }
                }

                // Alle Boote des Rennens
                foreach (var boatData in raceData.BoatsData)
                {
                    // Neues Boot
                    var newBoat = new UserControls.Boat(boatData);

                    // Die Ruderer des Bootes
                    var rowers = new List <UserControls.Rower>();

                    // Ruderer hinzufügen
                    foreach (var rowerData in boatData.Rowers)
                    {
                        boatBuilder.AddRower(ref rowers, raceData, rowerData, false, _delayTime);
                    }

                    // Steuermann hinzufügen
                    if (boatData.Cox != null)
                    {
                        boatBuilder.AddRower(ref rowers, raceData, boatData.Cox, true, _delayTime);
                    }

                    // Ruderer zum Boot hinzufügen
                    newBoat.Rowers = rowers;

                    // Status-Symbol des Boots entsprechend des Status der Ruderer im Boot setzen
                    boatBuilder.SetBoatStatus(raceData, boatData, newRace, newBoat);

                    // Boote zum Rennen hinzufügen
                    newRace.Boats.Add(newBoat);
                }

                // Status-Symbol des Rennens entsprechend des Status der Boote im Rennen setzen
                boatBuilder.SetRaceStatus(newRace);

                // Rennen hinzufügen
                vmRaces.Add(newRace);
            }

            _vm.Races = vmRaces;
        }