Ejemplo n.º 1
0
        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
            }
                                                        ));
        }
Ejemplo n.º 2
0
 private void InitialiseViewModel()
 {
     DataContext = new DataDrivenVisualsViewModel();
 }