private void dataGridMassSpectra_SelectionChanged(object sender, SelectionChangedEventArgs e) { Dictionary <string, object> tableValues = PatternTools.pTools.AnonymousToDictionary(dataGridMassSpectra.SelectedItem); int scanNumber = (int)tableValues["ScanNumber"]; ShowSpectrum(scanNumber); //Select the dot in the MS2 viewer ScatterSeries ss = (ScatterSeries)MyPlotMS2disposition.Model.Series[0]; ScatterPoint point = ss.Points.Find(a => (int)a.Tag == scanNumber); int indexToSelect = ss.Points.IndexOf(point); bool isSelected = ss.IsItemSelected(indexToSelect); if (!isSelected) { MyPlotMS2disposition.Model.Series[0].SelectItem(indexToSelect); ss.SelectItem(indexToSelect); MyPlotMS2disposition.Model.InvalidatePlot(false); } }
private void RefreshMS2DispositionPlot() { PlotModel myPlot = new PlotModel(); var scatterSeries1 = new ScatterSeries(); scatterSeries1.SelectionMode = OxyPlot.SelectionMode.Single; myPlot.SelectionColor = OxyColors.Red; scatterSeries1.MarkerSize = 3; scatterSeries1.MarkerStroke = OxyColors.DarkGreen; scatterSeries1.MarkerFill = OxyColors.LightGreen; scatterSeries1.MarkerType = MarkerType.Circle; var linearAxis1 = new LinearAxis(); linearAxis1.Title = "Retention time"; linearAxis1.Position = AxisPosition.Bottom; myPlot.Axes.Add(linearAxis1); var linearAxis2 = new LinearAxis(); linearAxis2.Title = "m/z"; linearAxis2.Position = AxisPosition.Left; myPlot.Axes.Add(linearAxis2); foreach (MSUltraLight ms in MyMS2) { ScatterPoint s = new ScatterPoint(ms.CromatographyRetentionTime, (double)ms.Precursors[0].Item1); s.Tag = ms.ScanNumber; scatterSeries1.Points.Add(s); } scatterSeries1.MouseDown += (s, e) => { int index = (int)Math.Round(e.HitTestResult.Index); Console.WriteLine("Index of nearest point " + index); scatterSeries1.SelectItem(index); myPlot.InvalidatePlot(false); int scanNo = (int)scatterSeries1.Points[index].Tag; //And now select the spectrum in the table var theDataInDataGridView = (IEnumerable <dynamic>) this.dataGridMassSpectra.ItemsSource; int tableIndex = -1; foreach (var v in theDataInDataGridView) { tableIndex++; Dictionary <string, object> a = PatternTools.pTools.AnonymousToDictionary(v); if ((int)a["ScanNumber"] == scanNo) { break; } } dataGridMassSpectra.ScrollIntoView(dataGridMassSpectra.Items[tableIndex]); dataGridMassSpectra.UpdateLayout(); dataGridMassSpectra.SelectedIndex = tableIndex; }; myPlot.Series.Add(scatterSeries1); MyPlotMS2disposition.Model = myPlot; }