/// <summary> /// Get or create a linear numeric axis in the correct dimension. /// </summary> /// <param name="orientation">Dimension of the axis to create.</param> /// <param name="oldAxis"> /// Old value of the axis in this dimension. /// </param> /// <returns>New value of the axis in this dimension.</returns> private IRangeAxis GetAxis(AxisOrientation orientation, IRangeAxis oldAxis) { // Check the existing axes for a potential axis IRangeAxis axis = (from IRangeAxis a in SeriesHost.Axes.OfType<IRangeAxis>() where a.Orientation == orientation select a) .FirstOrDefault(); if (axis == null) { // Create a new axis if not found axis = new LinearAxis { Orientation = orientation, }; } if (oldAxis != axis) { // Unregister any existing axis if (oldAxis != null) { SeriesHost.UnregisterWithAxis(this, oldAxis); oldAxis.Invalidated -= OnAxisInvalidated; } // Register the new axis SeriesHost.RegisterWithAxis(this, axis); axis.Invalidated += OnAxisInvalidated; } return axis; }
/// <summary> /// Generates value/value Series samples. /// </summary> /// <param name="panel">Panel to add the generated Charts to.</param> /// <param name="seriesConstructor">Function that returns a Series instance for each sample.</param> public static void GenerateDateTimeValueSeriesSamples(Panel panel, Func<Series> seriesConstructor) { Scenario[] scenarios = new Scenario[] { new Scenario { Title = "Value by Date", ItemsSource = _dynamicDateItemsSource, DependentValueBinding = new Binding("Second"), IndependentValueBinding = new Binding("First") }, }; Action<Chart> chartModifier = (chart) => { IAxis dateAxis = new DateTimeAxis { Orientation = AxisOrientation.Horizontal }; chart.Axes.Add(dateAxis); IAxis valueAxis = new LinearAxis { Orientation = AxisOrientation.Vertical, Minimum = 0, Maximum = 20, ShowGridLines = true }; chart.Axes.Add(valueAxis); }; GenerateSeriesSamples(panel, seriesConstructor, scenarios, chartModifier); }