void tree_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs <object> e) { AbstractWaterBody ab = e.NewValue as AbstractWaterBody; if (ab != null) { WaterView.DataContext = new WaterBodyViewModel(ab); } }
public WaterBodyViewModel(AbstractWaterBody WB) : base(WB) { _waterBody = WB; //If there is output if (_waterBody.Output.Items.Max(var => var.Values.Count()) > 1) { WB.Output.Summarize(100); _storageTimeStart = _waterBody.Output.Items.First(var => var.Values.Count() > 2).StartTime; _storageTimeEnd = _waterBody.Output.Items.First(var => var.Values.Count() > 2).EndTime; UpdateWB(); } //Build the groundwater list _groundwaterBoundaries = new ObservableCollection <GroundWaterBoundary>(); foreach (var GWB in _waterBody.GroundwaterBoundaries) { if (GWB is GroundWaterBoundary) { _groundwaterBoundaries.Add((GroundWaterBoundary)GWB); } } //Build the sources list _sources = new ObservableCollection <SourceBoundaryViewModel>(); foreach (var S in _waterBody.Sources) { _sources.Add(new SourceBoundaryViewModel((AbstractBoundary)S, "Source")); } foreach (var S in _waterBody.Precipitation) { _sources.Add(new SourceBoundaryViewModel((AbstractBoundary)S, "Precipitation")); } //Build the sinks list _sinks = new ObservableCollection <SourceBoundaryViewModel>(); foreach (var S in _waterBody.EvaporationBoundaries) { _sinks.Add(new SourceBoundaryViewModel((AbstractBoundary)S, "Evaporation")); } foreach (var S in _waterBody.Sinks) { _sinks.Add(new SourceBoundaryViewModel((AbstractBoundary)S, "Sinks")); } //Build the chemical lists Chemicals = new ObservableCollection <LineSeries>(); foreach (var ts in _waterBody.Output.ChemicalsToLog.Values) { LineSeries ls = new LineSeries(); ls.ItemsSource = ts.Items; ls.DependentValuePath = "Value"; ls.IndependentValuePath = "Time"; ls.Title = ts.Name; Chemicals.Add(ls); } //Build composition lists Compositions = new ObservableCollection <LineSeries>(); foreach (var ts in _waterBody.Output.CompositionLog.Values) { LineSeries ls = new LineSeries(); ls.ItemsSource = ts.Items; ls.DependentValuePath = "Value"; ls.IndependentValuePath = "Time"; ls.Title = ts.Name; Compositions.Add(ls); } ChemicalMeasurements = new ObservableCollection <ScatterSeries>(); { foreach (var cts in _waterBody.RealData.ChemicalConcentrations.Values) { ScatterSeries ls = new ScatterSeries(); ls.ItemsSource = cts.Items; ls.DependentValuePath = "Value"; ls.IndependentValuePath = "Time"; ls.Title = cts.Name; ChemicalMeasurements.Add(ls); } } }