corelibraries-devexpress-dot-xtracharts-d0b5fde4.md
Should be implemented by any class that can be used as a data adapter that creates series based on a template.
Namespace : DevExpress.XtraCharts
Assembly : DevExpress.XtraCharts.v25.2.dll
NuGet Package : DevExpress.Charts
public interface ISeriesTemplateAdapter :
IChartDataAdapter,
ICloneable
Public Interface ISeriesTemplateAdapter
Inherits IChartDataAdapter,
ICloneable
The following members return ISeriesTemplateAdapter objects:
The following example shows how to implement a series template adapter. This adapter is used to create two series with numeric arguments and values:
using DevExpress.XtraCharts;
using System;
using System.Collections.Generic;
using System.Windows.Forms;
namespace CustomDataAdapter {
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e) {
List<DataItem> dataItems = new List<DataItem>() {
new DataItem(1,1,"I"),
new DataItem(2,2,"I"),
new DataItem(3,3,"I"),
new DataItem(4,4,"I"),
new DataItem(5,5,"I"),
new DataItem(1,5,"II"),
new DataItem(2,4,"II"),
new DataItem(3,3,"II"),
new DataItem(4,2,"II"),
new DataItem(5,1,"II")
};
chartControl1.SeriesTemplate.DataAdapter = new CustomNumericDataAdapter(dataItems);
chartControl1.SeriesTemplate.ChangeView(ViewType.StepLine);
}
}
public class DataItem {
public double Argument { get; }
public double Value { get; }
public string Category { get; }
public DataItem(double argument, double value, string category) {
Argument = argument;
Value = value;
Category = category;
}
}
public class CustomNumericDataAdapter : ISeriesTemplateAdapter {
readonly IList<DataItem> items;
public bool DataSorted => true;
public int ItemsCount => this.items.Count;
public CustomNumericDataAdapter(IList<DataItem> items) {
this.items = items;
}
event NotifyChartDataChangedEventHandler IChartDataAdapter.DataChanged {
add { }
remove { }
}
public object Clone() {
return this;
}
public double GetNumericalValue(int index, ChartDataMemberType dataMember) {
switch (dataMember) {
case ChartDataMemberType.Argument: return items[index].Argument;
case ChartDataMemberType.Value: return items[index].Value;
}
return double.NaN;
}
public object GetSourceObject(int index) {
return this.items[index];
}
public ActualScaleType GetScaleType(ChartDataMemberType dataMember) {
return ActualScaleType.Numerical;
}
public object GetObjectValue(int index, ChartDataMemberType dataMember) {
return dataMember is ChartDataMemberType.Series ? items[index].Category : string.Empty;
}
public DateTime GetDateTimeValue(int index, ChartDataMemberType dataMember) {
throw new NotImplementedException();
}
public string GetQualitativeValue(int index, ChartDataMemberType dataMember) {
throw new NotImplementedException();
}
public TimeSpan GetTimeSpanValue(int index, ChartDataMemberType dataMember) {
throw new NotImplementedException();
}
}
}
Imports DevExpress.XtraCharts
Imports System
Imports System.Collections.Generic
Imports System.Windows.Forms
Namespace CustomDataAdapter
Public Partial Class Form1
Inherits Form
Public Sub New()
Me.InitializeComponent()
End Sub
Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs)
Dim dataItems As List(Of DataItem) = New List(Of DataItem)() From {
New DataItem(1, 1, "I"),
New DataItem(2, 2, "I"),
New DataItem(3, 3, "I"),
New DataItem(4, 4, "I"),
New DataItem(5, 5, "I"),
New DataItem(1, 5, "II"),
New DataItem(2, 4, "II"),
New DataItem(3, 3, "II"),
New DataItem(4, 2, "II"),
New DataItem(5, 1, "II")
}
Me.chartControl1.SeriesTemplate.DataAdapter = New CustomNumericDataAdapter(dataItems)
Me.chartControl1.SeriesTemplate.ChangeView(ViewType.StepLine)
End Sub
End Class
Public Class DataItem
Public ReadOnly Property Argument As Double
Public ReadOnly Property Value As Double
Public ReadOnly Property Category As String
Public Sub New(ByVal argument As Double, ByVal value As Double, ByVal category As String)
Me.Argument = argument
Me.Value = value
Me.Category = category
End Sub
End Class
Public Class CustomNumericDataAdapter
Implements ISeriesTemplateAdapter
Private ReadOnly items As IList(Of DataItem)
Public ReadOnly Property DataSorted As Boolean Implements IChartDataAdapter.DataSorted
Get
Return True
End Get
End Property
Public ReadOnly Property ItemsCount As Integer Implements IChartDataAdapter.ItemsCount
Get
Return items.Count
End Get
End Property
Public Sub New(ByVal items As IList(Of DataItem))
Me.items = items
End Sub
Private Custom Event DataChanged As NotifyChartDataChangedEventHandler Implements IChartDataAdapter.DataChanged
AddHandler(ByVal value As NotifyChartDataChangedEventHandler)
End AddHandler
RemoveHandler(ByVal value As NotifyChartDataChangedEventHandler)
End RemoveHandler
RaiseEvent(ByVal sender As Object, ByVal e As ChartDataUpdateEventArgs)
End RaiseEvent
End Event
Public Function Clone() As Object Implements ICloneable.Clone
Return Me
End Function
Public Function GetNumericalValue(ByVal index As Integer, ByVal dataMember As ChartDataMemberType) As Double Implements IChartDataAdapter.GetNumericalValue
Select Case dataMember
Case ChartDataMemberType.Argument
Return items(index).Argument
Case ChartDataMemberType.Value
Return items(index).Value
End Select
Return Double.NaN
End Function
Public Function GetSourceObject(ByVal index As Integer) As Object Implements IChartDataAdapter.GetSourceObject
Return items(index)
End Function
Public Function GetScaleType(ByVal dataMember As ChartDataMemberType) As ActualScaleType Implements IChartDataAdapter.GetScaleType
Return ActualScaleType.Numerical
End Function
Public Function GetObjectValue(ByVal index As Integer, ByVal dataMember As ChartDataMemberType) As Object Implements IChartDataAdapter.GetObjectValue
Return If(TypeOf dataMember Is ChartDataMemberType.Series, items(index).Category, String.Empty)
End Function
Public Function GetDateTimeValue(ByVal index As Integer, ByVal dataMember As ChartDataMemberType) As Date Implements IChartDataAdapter.GetDateTimeValue
Throw New NotImplementedException()
End Function
Public Function GetQualitativeValue(ByVal index As Integer, ByVal dataMember As ChartDataMemberType) As String Implements IChartDataAdapter.GetQualitativeValue
Throw New NotImplementedException()
End Function
Public Function GetTimeSpanValue(ByVal index As Integer, ByVal dataMember As ChartDataMemberType) As TimeSpan Implements IChartDataAdapter.GetTimeSpanValue
Throw New NotImplementedException()
End Function
End Class
End Namespace
See Also