Back to Devexpress

How to: Obtain Automatically Calculated Axis Property Values

wpf-115446-controls-and-libraries-charts-suite-chart-control-examples-chart-elements-how-to-obtain-automatically-calculated-axis-property-values.md

latest5.1 KB
Original Source

How to: Obtain Automatically Calculated Axis Property Values

  • Jun 07, 2019
  • 2 minutes to read

This example demonstrates how to obtain axis parameters, which are calculated automatically, for example, in ContinuouslDateTimeScale mode.

To do this, handle the ChartControl.AxisScaleChanged event. In the event handler, it is possible to obtain axis parameters using the AxisScaleChangedEventArgs.Axis property. In this example, the property is cast to the ContinuouslDateTimeScale type and its ContinuousDateTimeScaleOptions.GridSpacing and ContinuousDateTimeScaleOptions.GridAlignment properties are used.

xaml
<Window
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:ValuesOfDateTimeScale"
        xmlns:dxc="http://schemas.devexpress.com/winfx/2008/xaml/charts" x:Class="ValuesOfDateTimeScale.MainWindow"
        mc:Ignorable="d"
        Title="MainWindow" Height="350" Width="525">
    <Grid>

        <dxc:ChartControl x:Name="ChartControl" AxisScaleChanged="ChartControl_AxisScaleChanged">
            <dxc:ChartControl.Legend>
                <dxc:Legend/>
            </dxc:ChartControl.Legend>
            <dxc:XYDiagram2D>
                <dxc:BarSideBySideSeries2D DisplayName="Series 1">
                    <dxc:SeriesPoint Argument="08/01/2005" Value="6.5"/>
                    <dxc:SeriesPoint Argument="09/01/2005" Value="4.4"/>
                    <dxc:SeriesPoint Argument="10/01/2005" Value="7.1"/>
                    <dxc:SeriesPoint Argument="11/01/2005" Value="6.5"/>
                    <dxc:SeriesPoint Argument="12/01/2005" Value="6.5"/>

                    <dxc:SeriesPoint Argument="08/01/2006" Value="6.9"/>
                    <dxc:SeriesPoint Argument="09/01/2006" Value="4.4"/>
                    <dxc:SeriesPoint Argument="10/01/2006" Value="4.1"/>
                    <dxc:SeriesPoint Argument="11/01/2006" Value="2.9"/>
                    <dxc:SeriesPoint Argument="12/01/2006" Value="3.5"/>

                    <dxc:SeriesPoint Argument="08/01/2007" Value="6.9"/>
                    <dxc:SeriesPoint Argument="09/01/2007" Value="5.4"/>
                    <dxc:SeriesPoint Argument="10/01/2007" Value="3.9"/>
                    <dxc:SeriesPoint Argument="11/01/2007" Value="4.9"/>
                    <dxc:SeriesPoint Argument="12/01/2007" Value="3.5"/>
                </dxc:BarSideBySideSeries2D>
            </dxc:XYDiagram2D>
        </dxc:ChartControl>

    </Grid>
</Window>
csharp
using DevExpress.Xpf.Charts;
using System;
using System.Windows;

namespace ValuesOfDateTimeScale {
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window {
        public MainWindow() {
            InitializeComponent();
        }

        private void ChartControl_AxisScaleChanged(object sender, DevExpress.Xpf.Charts.AxisScaleChangedEventArgs e) {
            AxisX2D axisX2D = e.Axis as AxisX2D;
            if (axisX2D == null) return;
            ContinuousDateTimeScaleOptions options = new ContinuousDateTimeScaleOptions();
            if (options == null) return;
            axisX2D.Title = new AxisTitle {
                Visible = true,
                Content = String.Format(
                    "The Axis Grid Alignment Unit is {0}\r\nThe Axis Grid Spacing is {1}",
                    options.GridAlignment,
                    options.GridSpacing
                )
            };
        }
    }
}
vb
Imports DevExpress.Xpf.Charts
Imports System
Imports System.Windows

Namespace ValuesOfDateTimeScale
    ''' <summary>
    ''' Interaction logic for MainWindow.xaml
    ''' </summary>
    Partial Public Class MainWindow
        Inherits Window

        Public Sub New()
            InitializeComponent()
        End Sub

        Private Sub ChartControl_AxisScaleChanged(ByVal sender As Object, ByVal e As DevExpress.Xpf.Charts.AxisScaleChangedEventArgs)
            Dim axisX2D As AxisX2D = TryCast(e.Axis, AxisX2D)
            If axisX2D Is Nothing Then
                Return
            End If
            Dim options As New ContinuousDateTimeScaleOptions()
            If options Is Nothing Then
                Return
            End If
            axisX2D.Title = New AxisTitle With {.Visible = True, .Content = String.Format("The Axis Grid Alignment Unit is {0}" & ControlChars.CrLf & "The Axis Grid Spacing is {1}", options.GridAlignment, options.GridSpacing)}
        End Sub
    End Class
End Namespace