/// <summary> /// Logic to hook up the <see cref="RunsView" /> for UI binding. /// </summary> private void InitRunsView() { CurrentSelectedRun = null; if (CurrentSelectedPingJob?.Result == null) { RunsView = null; return; } RunsView = CollectionViewSource.GetDefaultView(CurrentSelectedPingJob.Result.Runs) as ListCollectionView; if (RunsView == null) { return; } RunsView.CurrentChanged += (s, e) => { RaisePropertyChanged(() => CurrentSelectedRun); }; CurrentSelectedPingJob.Result.Runs.CollectionChanged += (s, e) => { if (e.NewItems != null) { foreach (INotifyPropertyChanged added in e.NewItems) { added.PropertyChanged += RunsOnPropertyChanged; } } if (e.OldItems != null) { foreach (INotifyPropertyChanged removed in e.OldItems) { removed.PropertyChanged -= RunsOnPropertyChanged; } } }; if (RunsView.Count > 0) { RunsView.MoveCurrentToFirst(); } }
private void RunsOnPropertyChanged(object sender, PropertyChangedEventArgs e) { RunsView.Refresh(); }