public static void Load(DataDrivenVisualsViewModel viewModel, bool isInDesignerMood) { var modelData = DataProducer.GetMeSomePhatData(isInDesignerMood ? 50 : 365).OrderBy(d => d.Date); viewModel.AxisX = new AxesCollection(); Axis xAxis = new Axis(); xAxis.LabelFormatter = s => new DateTime((long)s).ToString("hh:mm:ss"); xAxis.MinValue = modelData.First().Date.Ticks; xAxis.MaxValue = modelData.First().Date.AddSeconds(50).Ticks; viewModel.AxisX.Add(xAxis); viewModel.AxisY = new AxesCollection(); Axis yAxis = new Axis(); yAxis.MinValue = (double)modelData.Min(d => d.Min); yAxis.MaxValue = (double)modelData.Max(d => d.Max); viewModel.AxisY.Add(yAxis); viewModel.Series.Add(new StackedAreaSeries { Values = new ChartValues <DateTimePoint>(modelData.Select(m => new DateTimePoint() { DateTime = m.Date, Value = (double)m.Min })), Fill = Brushes.Transparent, Stroke = Brushes.Orange, StrokeThickness = 1 }); viewModel.Series.Add(new StackedAreaSeries { Values = new ChartValues <DateTimePoint>(modelData.Select(m => new DateTimePoint() { DateTime = m.Date, Value = (double)(m.Price - m.Min) })), Fill = Brushes.Transparent, Stroke = Brushes.Blue, StrokeThickness = 3 }); viewModel.Series.Add(new StackedAreaSeries { Values = new ChartValues <DateTimePoint>(modelData.Select(m => new DateTimePoint() { DateTime = m.Date, Value = (double)(m.Max - m.Price) })), Fill = Brushes.Transparent, Stroke = Brushes.Green, StrokeThickness = 1 }); viewModel.Visuals.AddRange(modelData.Select(d => new VisualElement { UIElement = new CustomVisualControl { DataContext = d }, X = d.Date.Ticks, Y = (double)d.Price, IsScaledWithChart = true, ScaleXRatio = TimeSpan.FromSeconds(0.5).Ticks, ScaleYRatio = ((double)Math.Max(Math.Abs(d.Price - d.Max), Math.Abs(d.Price - d.Min)) * 2d), HorizontalAlignment = System.Windows.HorizontalAlignment.Right, VerticalAlignment = System.Windows.VerticalAlignment.Center } )); }
private void InitialiseViewModel() { DataContext = new DataDrivenVisualsViewModel(); }