Back to Devexpress

IAxisLabelFormatter Interface

wpf-devexpress-dot-xpf-dot-charts-c3db8c8c.md

latest4.9 KB
Original Source

IAxisLabelFormatter Interface

If implemented by a class, provides a method required for a chart control to format axis labels.

Namespace : DevExpress.Xpf.Charts

Assembly : DevExpress.Xpf.Charts.v25.2.dll

NuGet Package : DevExpress.Wpf.Charts

Declaration

csharp
public interface IAxisLabelFormatter :
    IAxisLabelFormatterCore
vb
Public Interface IAxisLabelFormatter
    Inherits IAxisLabelFormatterCore

The following members return IAxisLabelFormatter objects:

Example

Perform the steps below to create a formatter:

  • Create a class that implements the IAxisLabelFormatter interface and uses the interface’s GetAxisLabelText method.
  • Assign the newly created class’s instance to the AxisLabel.Formatter property.

How to: Format Numeric Axis Labels

This example applies a custom format to the numeric axis’s labels.

A formatter applies to axis labels:

A formatter does not apply to axis labels:

Markup:

xaml
<dxc:XYDiagram2D.AxisX>
    <dxc:AxisX2D>
        <dxc:AxisX2D.Label>
            <dxc:AxisLabel>
                <dxc:AxisLabel.Formatter>
                    <local:AxisLabelFormatter/>
                </dxc:AxisLabel.Formatter>
            </dxc:AxisLabel>
        </dxc:AxisX2D.Label>
    </dxc:AxisX2D>
</dxc:XYDiagram2D.AxisX>
<dxc:XYDiagram2D.AxisY>
    <dxc:AxisY2D>
            <dxc:AxisLabel>
                <dxc:AxisLabel.Formatter>
                    <local:AxisLabelFormatter/>
                </dxc:AxisLabel.Formatter>
            </dxc:AxisLabel>
        </dxc:AxisY2D.Label>
    </dxc:AxisY2D>
</dxc:XYDiagram2D.AxisY>

Code-Behind:

csharp
public class AxisLabelFormatter : IAxisLabelFormatter {
    public string GetAxisLabelText(object axisValue) {
        return Convert.ToString((double)axisValue / 1000);
    }
}
vb
Public Class AxisLabelFormatter
    Implements IAxisLabelFormatter
    Public Function GetAxisLabelText(ByVal axisValue As Object) As String
        Return Convert.ToString(CDbl(axisValue) / 1000)
    End Function
End Class

How to: Format Date-Time Axis Labels

This example formats date-time axis labels as follows:

A formatter applies to axis labels:

A formatter does not apply to axis labels:

Markup:

xaml
<dxc:XYDiagram2D.AxisX>
    <dxc:AxisX2D>
        <dxc:AxisX2D.DateTimeScaleOptions>
            <dxc:ManualDateTimeScaleOptions AutoGrid="False" 
                                            GridAlignment="Day" 
                                            GridSpacing="7"/>
        </dxc:AxisX2D.DateTimeScaleOptions>
        <dxc:AxisX2D.Label>
            <dxc:AxisLabel>
                <dxc:Axis2D.ResolveOverlappingOptions>
                    <dxc:AxisLabelResolveOverlappingOptions AllowHide="False"/>
                </dxc:Axis2D.ResolveOverlappingOptions>
                <dxc:AxisLabel.Formatter>
                    <local:AxisLabelFormatter/>
                </dxc:AxisLabel.Formatter>
            </dxc:AxisLabel>
        </dxc:AxisX2D.Label>
    </dxc:AxisX2D>
</dxc:XYDiagram2D.AxisX>

Code-Behind:

csharp
public class AxisLabelFormatter : IAxisLabelFormatter {
    public string GetAxisLabelText(object axisValue) {
        DateTime value = (DateTime)axisValue;
        return ((value.Day >= 1) && (value.Day <= 7)) ? $"{value.ToString("MMM, d")}" : $"{value.Day}";
    }
}
vb
Public Class AxisLabelFormatter
    Implements IAxisLabelFormatter

    Public Function GetAxisLabelText(ByVal axisValue As Object) As String
        Dim value As DateTime = CType(axisValue, DateTime)
        Return If(((value.Day >= 1) AndAlso (value.Day <= 7)), $"{value.ToString("MMM, d")}", $"{value.Day}")
    End Function
End Class

See Also

IAxisLabelFormatter Members

DevExpress.Xpf.Charts Namespace