private void OnTriggerActiveChanged(KeyValuePair <Pins, bool> keyValuePair) { var series = CurrentValuePlot.Series.Single(x => ((Pins)x.Tag) == keyValuePair.Key); series.IsVisible = keyValuePair.Value; CurrentValuePlot.InvalidatePlot(true); }
private void UpdateUiWithPinValuesThreadCallback() { while (true) { Dictionary <DateTime, List <byte> > pinValuesToShow; lock (_pinValuesLock) { pinValuesToShow = new Dictionary <DateTime, List <byte> >(_pinValues); _pinValues.Clear(); } if (pinValuesToShow.Count > 0) { DateTime timeStamp = pinValuesToShow.Last().Key; var pinsSeries = CurrentValuePlot.Series.OfType <DataPointSeries>().Where(x => x.IsVisible && x.Tag is Pins).ToDictionary(x => (Pins)x.Tag, x => x); Application.Current.Dispatcher.Invoke(() => { CurrentValuePlot.Axes.Where(x => x.Position == AxisPosition.Bottom).OfType <DateTimeAxis>() .ForEach(x => { x.Minimum = DateTimeAxis.ToDouble(timeStamp.AddSeconds(-15)); x.Maximum = DateTimeAxis.ToDouble(timeStamp.AddSeconds(5)); }); foreach (var value in pinValuesToShow) { for (int i = 0; i < value.Value.Count; i++) { if (pinsSeries.ContainsKey((Pins)i)) { pinsSeries[(Pins)i].Points.Add(new DataPoint(DateTimeAxis.ToDouble(value.Key), value.Value[i])); } } } CurrentValuePlot.InvalidatePlot(true); }); } Thread.Sleep(200); } }