/// <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; }