private void Vm_AddControl(ScaleValuesData model) { var cntrls = stCharts.Children.OfType <ChartDataControl>(); var cntrl = cntrls.FirstOrDefault(o => o.Name.Equals(model.Name ?? "OBD" + model.Code)); if (cntrl == null) { cntrl = new ChartDataControl { Name = string.IsNullOrEmpty(model.Name) ? "OBD" + model.Code: model.Name, MinHeight = 80 }; cntrl.MouseWeel += ChartDataControl_MouseWheel; cntrl.BorderClick += ChartDataControl_BorderClick; stCharts.Children.Add(cntrl); var value = model.Data.Average(o => o.Value); var element = new Border { Child = GetElement(model.Name ?? model.Code, ((int)value).ToString()), //BorderThickness = new Thickness(1), //BorderBrush = new SolidColorBrush(Colors.Gray) }; var bind = new Binding("ActualHeight") { Source = cntrl }; element.SetBinding(HeightProperty, bind); stImages.Children.Add(element); } cntrl.Data = model; }
protected virtual void OnAddControl(ScaleValuesData model) { if (AddControl != null) { AddControl.Invoke(model); } }
private void DisplayData(ScaleValuesData model) { _data = model; ClearEvent(); stkTicks.Children.Clear(); if (_data == null || _data.Data == null || !_data.Data.Any() || Math.Abs(_controlWidth) < 0.1) { return; } Prescale(_data.Data.Max(o => o.Value)); if (_data.Data.Any(o => o.Date.Hour > 0)) { DisplayHourData(model.UseMaxMin, model.MinVal, model.MaxVal); } else { DisplayDayData(model.UseMaxMin, model.MinVal, model.MaxVal); } }
/// <summary> /// Хендлер обработки данных для дня day /// </summary> /// <param name="day"></param> /// <param name="data"></param> private void Instance_DayRefreshed(DateTime day, List <CarStateModel> data) { var f = data.FirstOrDefault(); if (f == null) { return; } //CacheRoute(string.Format("[{0}]-{1}-{2}-{3}", f.DevID, day.Day, day.Month, day.Year), data); if (f.DevID != SelectedCar.ID) { return; } var list = new List <ChartValuesData>(); UpDate = "Обновляю данные за " + day.ToShortDateString(); var slowTask = new Task(delegate { var dt = new DateTime(day.Year, day.Month, day.Day); BuildDataRow(data, dt); if (dt.Equals(SelectedDate) || Scale == 5) { list = GetStaticData(); } }); slowTask.ContinueWith(delegate { DispatherThreadRun(delegate { if (list.Any()) { ListData = new ScaleValuesData { Data = list, Scale = Scale } } ; UpDate = ""; });