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;
        }
示例#2
0
 protected virtual void OnAddControl(ScaleValuesData model)
 {
     if (AddControl != null)
     {
         AddControl.Invoke(model);
     }
 }
示例#3
0
        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);
            }
        }
示例#4
0
        /// <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 = "";
                });