Back to Devexpress

Annotation Class

wpf-devexpress-dot-xpf-dot-charts-0eb44cbe.md

latest7.4 KB
Original Source

Annotation Class

An additional note that can be anchored to a chart, pane, or series point.

Namespace : DevExpress.Xpf.Charts

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

NuGet Package : DevExpress.Wpf.Charts

Declaration

csharp
public class Annotation :
    ChartNotificationElement,
    IWeakEventListener,
    IHitTestableElement,
    IInteractiveElement,
    IScrollBarAnnotation
vb
Public Class Annotation
    Inherits ChartNotificationElement
    Implements IWeakEventListener,
               IHitTestableElement,
               IInteractiveElement,
               IScrollBarAnnotation

The following members return Annotation objects:

Remarks

For more information about annotations, refer to the following help topic: Annotations.

Examples

Add an Annotation in Markup

This example demonstrates how to anchor an annotation to a series point.

To do this, specify the SeriesPointAnchorPoint.SeriesPoint property.

xaml
<dxc:Annotation Content="Annotation #1">
    <dxc:Annotation.AnchorPoint>
        <dxc:SeriesPointAnchorPoint SeriesPoint="{Binding ElementName=seriesPoint}"/>
    </dxc:Annotation.AnchorPoint>
    <dxc:Annotation.ShapePosition>
        <dxc:RelativePosition Angle="60" 
                              ConnectorLength="50"/>
    </dxc:Annotation.ShapePosition>
</dxc:Annotation>

Add an Annotation in Code

The following example creates an annotation that is anchored to a pane.

xaml
<dxc:ChartControl x:Name="chartControl">
    <dxc:XYDiagram2D x:Name="diagram">
        <dxc:XYDiagram2D.SecondaryAxesX>
            <dxc:SecondaryAxisX2D x:Name="xAxis"/>
        </dxc:XYDiagram2D.SecondaryAxesX>
        <dxc:XYDiagram2D.SecondaryAxesY>
            <dxc:SecondaryAxisY2D x:Name="yAxis"/>
        </dxc:XYDiagram2D.SecondaryAxesY>
        <dxc:XYDiagram2D.Panes>
            <dxc:Pane x:Name="pane"/>
        </dxc:XYDiagram2D.Panes>
        <!--...-->
    </dxc:XYDiagram2D>
</dxc:ChartControl>
csharp
using DevExpress.Xpf.Charts;
//...
private void Window_Loaded(object sender, RoutedEventArgs e) {
    Annotation annotation = new Annotation();
    annotation.Content = "Annotation";
    annotation.AnchorPoint = new PaneAnchorPoint {
        AxisXCoordinate = new AxisXCoordinate { AxisValue = new TimeSpan(0, 0, 5), Axis = xAxis },
        AxisYCoordinate = new AxisYCoordinate { AxisValue = 100, Axis = yAxis }, 
        Pane = pane
    };
    annotation.ShapePosition = new RelativePosition { Angle = 30, ConnectorLength = 60 };
    chartControl.Annotations.Add(annotation);
}
vb
Imports DevExpress.Xpf.Charts
'...
Private Sub Window_Loaded(ByVal sender As Object, ByVal e As RoutedEventArgs)
    Dim annotation As Annotation = New Annotation()
    annotation.Content = "Annotation"
    annotation.AnchorPoint = New PaneAnchorPoint With {
        .AxisXCoordinate = New AxisXCoordinate With {
            .AxisValue = New TimeSpan(0, 0, 5),
            .Axis = xAxis
        },
        .AxisYCoordinate = New AxisYCoordinate With {
            .AxisValue = 100,
            .Axis = yAxis
        },
        pane
    }
    annotation.ShapePosition = New RelativePosition With {
        .Angle = 30,
        .ConnectorLength = 60
    }
    chartControl.Annotations.Add(annotation)
End Sub

If the chart is bound to data and you want to anchor an annotation to a series point, use the ChartControl.BoundDataChanged event to access the point collection. The following example creates an annotation for each point of a spline series.

xaml
<dxc:ChartControl x:Name="chartControl" 
                  BoundDataChanged="chartControl_BoundDataChanged">
    <dxc:XYDiagram2D x:Name="diagram">
        <dxc:SplineSeries2D>
            <!--...-->
        </dxc:SplineSeries2D>
    </dxc:XYDiagram2D>
</dxc:ChartControl>
csharp
using DevExpress.Xpf.Charts;
//...
private void chartControl_BoundDataChanged(object sender, RoutedEventArgs e) {
    SplineSeries2D series = (SplineSeries2D)diagram.Series[0];
    if (series.Points.Count > 0) {
        for (int i = 0; i < series.Points.Count; i++) {
            chartControl.Annotations.BeginInit();
            Annotation annotation = new Annotation() { 
                Content = series.Points[i].Value.ToString() 
            };
            annotation.AnchorPoint = new SeriesPointAnchorPoint() { 
                SeriesPoint = series.Points[i] 
            };
            annotation.ShapePosition = new RelativePosition() { 
                Angle = 0, 
                ConnectorLength = 0 
            };
            chartControl.Annotations.Add(annotation);
            chartControl.Annotations.EndInit();
        }
    }
}
vb
Imports DevExpress.Xpf.Charts
'...
Private Sub chartControl_BoundDataChanged(ByVal sender As Object, ByVal e As RoutedEventArgs)
    Dim series As SplineSeries2D = CType(diagram.Series(0), SplineSeries2D)
    If series.Points.Count > 0 Then
        For i As Integer = 0 To series.Points.Count - 1
            chartControl.Annotations.BeginInit()
            Dim annotation As Annotation = New Annotation() With {
                .Content = series.Points(i).Value.ToString()
            }
            annotation.AnchorPoint = New SeriesPointAnchorPoint() With {
                .SeriesPoint = series.Points(i)
            }
            annotation.ShapePosition = New RelativePosition() With {
                .Angle = 0,
                .ConnectorLength = 0
            }
            chartControl.Annotations.Add(annotation)
            chartControl.Annotations.EndInit()
        Next
    End If
End Sub

Inheritance

Show 11 items

Object DispatcherObject DependencyObject Visual UIElement FrameworkElement Control ChartElementBase ChartElement DevExpress.Xpf.Charts.ChartNotificationElement Annotation

See Also

Annotation Members

ChartControl.AnnotationItemsSource

DevExpress.Xpf.Charts Namespace