private async void OnCurrentSessionChanged(object sender, EventArgs e) { if (this.Ratings == null) { return; } // Änderungen des zuletzt selektierten Ratings speichern if (this.CurrentRating != null) { if (_currentRatingHasChanges) { this.IsBusy = true; if (this.CurrentRating.Id == 0) { var rating = this.CurrentRating; var newRating = await _sessionService.AddRatingAsync(rating); rating.Id = newRating.Id; } else { await _sessionService.UpdateRatingAsync(this.CurrentRating); } _currentRatingHasChanges = false; this.IsBusy = false; } this.CurrentRating.PropertyChanged -= this.OnCurrentRatingPropertyChanged; } var session = this.SessionsView.CurrentItem as SessionDto; if (session != null) { this.CurrentRating = null; var rating = (from r in this.Ratings where r.SessionId.Equals(session.SessionBaseId) select r).FirstOrDefault(); this.CurrentRating = rating; if (this.CurrentRating == null && session.Speaker1Id > 0) { var newRating = new Rating() { SessionId = session.SessionBaseId, SpeakerId = session.Speaker1Id }; this.Ratings.Add(newRating); this.CurrentRating = newRating; } if (this.CurrentRating != null) { this.CurrentRating.PropertyChanged += this.OnCurrentRatingPropertyChanged; } } }